19 AdresPE::AdresPE(std::string name,
int num_inputs_arg, std::string fu_type,
int fu_II,
int latency,
int II,
Location loc,
bool use_op_div,
bool predExist,
bool reg_bypass,
bool extra_mem, std::string pred_scheme)
22 , num_inputs(num_inputs_arg)
27 using OpGraphVec = std::vector<OpGraphOpCode>;
28 std::map<std::string, OpGraphVec> fu_oplist;
44 if (use_op_div) fu_oplist[
"vliw"].push_back(
OpCode::DIV);
47 if (predExist && pred_scheme.find(
"event") == std::string::npos) {
84 addConnection(
"this.Context" ,
"MuxBypassConfig.Context",
false);
85 addConnection(
"this.Context" ,
"MuxOutConfig.Context",
false);
122 if (!predExist)
return;
130 bool top_pe =
name.find(
"r0") != std::string::npos;
131 bool is_event_pred_scheme = pred_scheme.find(
"event") != std::string::npos;
137 using OpGraphVec = std::vector<OpGraphOpCode>;
138 std::map<std::string, OpGraphVec> fu_oplist_pred;
139 fu_oplist_pred[
"pred"] = {
163 addConnection(
"this.Context" ,
"MuxAConfigPred.Context",
false);
164 addConnection(
"this.Context" ,
"MuxBConfigPred.Context",
false);
165 addConnection(
"this.Context" ,
"MuxBypassConfigPred.Context",
false);
166 addConnection(
"this.Context" ,
"MuxOutConfigPred.Context",
false);
167 addConnection(
"this.Context" ,
"FuncConfigPred.Context",
false);
172 if (i <= 0 + extra_mem)
continue;
190 if (i <= 0 + extra_mem)
continue;
201 if (i <= 0 + extra_mem)
continue;
213 if (i <= 0 + extra_mem)
continue;
225 addConnection(
"mux_bypass_pred.out",
"this.bypass_to_rf_pred");
227 if (pred_scheme.find(
"event") == std::string::npos){