[Libre-soc-isa] [Bug 552] New: single-predication has "splat" capability, needs review
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Wed Dec 23 18:47:34 GMT 2020
https://bugs.libre-soc.org/show_bug.cgi?id=552
Bug ID: 552
Summary: single-predication has "splat" capability, needs
review
Product: Libre-SOC's first SoC
Version: unspecified
Hardware: PC
OS: Linux
Status: CONFIRMED
Severity: enhancement
Priority: ---
Component: Specification
Assignee: lkcl at lkcl.net
Reporter: lkcl at lkcl.net
CC: libre-soc-isa at lists.libre-soc.org
NLnet milestone: ---
function op_add(rd, rs1, rs2) # add not VADD!
int i, id=0, irs1=0, irs2=0;
predval = get_pred_val(FALSE, rd);
rd = int_vec[rd ].isvector ? int_vec[rd ].regidx : rd;
rs1 = int_vec[rs1].isvector ? int_vec[rs1].regidx : rs1;
rs2 = int_vec[rs2].isvector ? int_vec[rs2].regidx : rs2;
for (i = 0; i < VL; i++)
STATE.srcoffs = i # save context
if (predval & 1<<i) # predication uses intregs
ireg[rd+id] <= ireg[rs1+irs1] + ireg[rs2+irs2];
if (!int_vec[rd ].isvector) break;
if (int_vec[rd ].isvector) { id += 1; }
if (int_vec[rs1].isvector) { irs1 += 1; }
if (int_vec[rs2].isvector) { irs2 += 1; }
if (id == VL or irs1 == VL or irs2 == VL) {
# end VL hardware loop
STATE.srcoffs = 0; # reset
STATE.ssvoffs = 0; # reset
return;
}
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the Libre-SOC-ISA
mailing list