diff --git a/src_Core/RISCY_OOO/procs/lib/Exec.bsv b/src_Core/RISCY_OOO/procs/lib/Exec.bsv index a2ef3b1..e73252a 100755 --- a/src_Core/RISCY_OOO/procs/lib/Exec.bsv +++ b/src_Core/RISCY_OOO/procs/lib/Exec.bsv @@ -451,19 +451,21 @@ function MemTaggedData gatherLoad( Addr addr, MemDataByteEn byteEn function extend = unsignedLd ? zeroExtend : signExtend; Bit#(IndxShamt) offset = truncate(addr); + function MemTaggedData data2taggedData (Data d) = MemTaggedData{ tag: False, data: unpack({64'b0, d})}; + if(pack(byteEn) == ~0) return data; else if(byteEn[7]) begin Vector#(2, Bit#(64)) dataVec = unpack(pack(data.data)); - return MemTaggedData { tag: False, data: unpack(extend(dataVec[offset[3]])) }; + return data2taggedData(extend(dataVec[offset[3]])); end else if(byteEn[3]) begin Vector#(4, Bit#(32)) dataVec = unpack(pack(data.data)); - return MemTaggedData { tag: False, data: unpack(extend(dataVec[offset[3:2]])) }; + return data2taggedData(extend(dataVec[offset[3:2]])); end else if(byteEn[1]) begin Vector#(8, Bit#(16)) dataVec = unpack(pack(data.data)); - return MemTaggedData { tag: False, data: unpack(extend(dataVec[offset[3:1]])) }; + return data2taggedData(extend(dataVec[offset[3:1]])); end else begin Vector#(16, Bit#(8)) dataVec = unpack(pack(data.data)); - return MemTaggedData { tag: False, data: unpack(extend(dataVec[offset])) }; + return data2taggedData(extend(dataVec[offset])); end endfunction