\section{CSR Dependency Tracking Granularity} \label{sec:csr-granularity} \begin{table}[h!] \centering \begin{tabular}{|l|l|l|} \hline Name & Portions Tracked as Independent Units & Aliases \\ \hline {\tt fflags} & Bits 4, 3, 2, 1, 0 & {\tt fcsr} \\ \hline {\tt frm} & entire CSR & {\tt fcsr} \\ \hline {\tt fcsr} & Bits 7-5, 4, 3, 2, 1, 0 & {\tt fflags}, {\tt frm} \\ \hline \end{tabular} \caption{Granularities at which syntactic dependencies are tracked through CSRs} \end{table} Note: read-only CSRs are not listed, as they do not participate in the definition of syntactic dependencies. \section{Source and Destination Register Listings} \label{sec:source-dest-regs} This section provides a concrete listing of the source and destination registers for each instruction. These listings are used in the definition of syntactic dependencies in Section~\ref{sec:memorymodel:dependencies}. The term ``accumulating CSR'' is used to describe a CSR that is both a source and a destination register, but which carries a dependency only from itself to itself. Instructions carry a dependency from each source register in the ``Source Registers'' column to each destination register in the ``Destination Registers'' column, from each source register in the ``Source Registers'' column to each CSR in the ``Accumulating CSRs'' column, and from each CSR in the ``Accumulating CSRs'' column to itself, except where annotated otherwise. Key: $^A$Address source register $^D$Data source register $^\dagger$The instruction does not carry a dependency from any source register to any destination register $^\ddagger$The instruction carries dependencies from source register(s) to destination register(s) as specified \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV32I Base Integer Instruction Set} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} LUI & & {\em rd} & & \\ \cline{2-4} AUIPC & & {\em rd} & & \\ \cline{2-4} JAL & & {\em rd} & & \\ \cline{2-4} JALR$^\dagger$ & {\em rs1} & {\em rd} & & \\ \cline{2-4} BEQ & {\em rs1}, {\em rs2} & & & \\ \cline{2-4} BNE & {\em rs1}, {\em rs2} & & & \\ \cline{2-4} BLT & {\em rs1}, {\em rs2} & & & \\ \cline{2-4} BGE & {\em rs1}, {\em rs2} & & & \\ \cline{2-4} BLTU & {\em rs1}, {\em rs2} & & & \\ \cline{2-4} BGEU & {\em rs1}, {\em rs2} & & & \\ \cline{2-4} LB$^\dagger$ & {\em rs1}$^A$ & {\em rd} & & \\ \cline{2-4} LH$^\dagger$ & {\em rs1}$^A$ & {\em rd} & & \\ \cline{2-4} LW$^\dagger$ & {\em rs1}$^A$ & {\em rd} & & \\ \cline{2-4} LBU$^\dagger$ & {\em rs1}$^A$ & {\em rd} & & \\ \cline{2-4} LHU$^\dagger$ & {\em rs1}$^A$ & {\em rd} & & \\ \cline{2-4} SB & {\em rs1}$^A$, {\em rs2}$^D$ & & & \\ \cline{2-4} SH & {\em rs1}$^A$, {\em rs2}$^D$ & & & \\ \cline{2-4} SW & {\em rs1}$^A$, {\em rs2}$^D$ & & & \\ \cline{2-4} ADDI & {\em rs1} & {\em rd} & & \\ \cline{2-4} SLTI & {\em rs1} & {\em rd} & & \\ \cline{2-4} SLTIU & {\em rs1} & {\em rd} & & \\ \cline{2-4} XORI & {\em rs1} & {\em rd} & & \\ \cline{2-4} ORI & {\em rs1} & {\em rd} & & \\ \cline{2-4} ANDI & {\em rs1} & {\em rd} & & \\ \cline{2-4} SLLI & {\em rs1} & {\em rd} & & \\ \cline{2-4} SRLI & {\em rs1} & {\em rd} & & \\ \cline{2-4} SRAI & {\em rs1} & {\em rd} & & \\ \cline{2-4} ADD & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} SUB & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} SLL & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} SLT & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} SLTU & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} XOR & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} SRL & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} SRA & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} OR & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} AND & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} FENCE & & & & \\ \cline{2-4} FENCE.I & & & & \\ \cline{2-4} ECALL & & & & \\ \cline{2-4} EBREAK & & & & \\ \cline{2-4} \end{tabular} \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV32I Base Integer Instruction Set (continued)} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} CSRRW$^\ddagger$ & {\em rs1}, {\em csr}$^*$ & {\em rd}, {\em csr} & & $^*$unless {\em rd}={\tt x0} \\ \cline{2-4} CSRRS$^\ddagger$ & {\em rs1}, {\em csr} & {\em rd}$^*$, {\em csr} & & $^*$unless {\em rs1}={\tt x0} \\ \cline{2-4} CSRRC$^\ddagger$ & {\em rs1}, {\em csr} & {\em rd}$^*$, {\em csr} & & $^*$unless {\em rs1}={\tt x0} \\ \cline{2-4} \multicolumn{1}{c}{} & \multicolumn{3}{l}{$\ddagger$carries a dependency from {\em rs1} to {\em csr} and from {\em csr} to {\em rd}} \end{tabular} \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV32I Base Integer Instruction Set (continued)} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} CSRRWI$^\ddagger$ & {\em csr}$^*$ & {\em rd}, {\em csr} & & $^*$unless {\em rd}={\tt x0} \\ \cline{2-4} CSRRSI$^\ddagger$ & {\em csr} & {\em rd}, {\em csr}$^*$ & & $^*$unless uimm[4:0]=0 \\ \cline{2-4} CSRRCI$^\ddagger$ & {\em csr} & {\em rd}, {\em csr}$^*$ & & $^*$unless uimm[4:0]=0 \\ \cline{2-4} \multicolumn{1}{c}{} & \multicolumn{3}{l}{$\ddagger$carries a dependency from {\em csr} to {\em rd}} \end{tabular} \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV64I Base Integer Instruction Set} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} LWU$^\dagger$ & {\em rs1}$^A$ & {\em rd} & & \\ \cline{2-4} LD$^\dagger$ & {\em rs1}$^A$ & {\em rd} & & \\ \cline{2-4} SD & {\em rs1}$^A$, {\em rs2}$^D$ & & & \\ \cline{2-4} SLLI & {\em rs1} & {\em rd} & & \\ \cline{2-4} SRLI & {\em rs1} & {\em rd} & & \\ \cline{2-4} SRAI & {\em rs1} & {\em rd} & & \\ \cline{2-4} ADDIW & {\em rs1} & {\em rd} & & \\ \cline{2-4} SLLIW & {\em rs1} & {\em rd} & & \\ \cline{2-4} SRLIW & {\em rs1} & {\em rd} & & \\ \cline{2-4} SRAIW & {\em rs1} & {\em rd} & & \\ \cline{2-4} ADDW & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} SUBW & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} SLLW & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} SRLW & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} SRAW & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} \end{tabular} \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV32M Standard Extension} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} MUL & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} MULH & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} MULHSU & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} MULHU & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} DIV & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} DIVU & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} REM & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} REMU & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} \end{tabular} \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV64M Standard Extension} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} MULW & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} DIVW & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} DIVUW & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} REMW & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} REMUW & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} \end{tabular} \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV32A Standard Extension} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} LR.W$^\dagger$ & {\em rs1}$^A$ & {\em rd} & & \\ \cline{2-4} SC.W$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd}$^*$ & & $^*$if successful \\ \cline{2-4} AMOSWAP.W$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOADD.W$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOXOR.W$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOAND.W$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOOR.W$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOMIN.W$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOMAX.W$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOMINU.W$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOMAXU.W$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} \end{tabular} \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV64A Standard Extension} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} LR.D$^\dagger$ & {\em rs1}$^A$ & {\em rd} & & \\ \cline{2-4} SC.D$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd}$^*$ & & $^*$if successful \\ \cline{2-4} AMOSWAP.D$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOADD.D$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOXOR.D$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOAND.D$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOOR.D$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOMIN.D$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOMAX.D$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOMINU.D$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} AMOMAXU.D$^\dagger$ & {\em rs1}$^A$, {\em rs2}$^D$ & {\em rd} & & \\ \cline{2-4} \end{tabular} \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV32F Standard Extension} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} FLW$^\dagger$ & {\em rs1}$^A$ & {\em rd} & & \\ \cline{2-4} FSW & {\em rs1}$^A$, {\em rs2}$^D$ & & & \\ \cline{2-4} FMADD.S & {\em rs1}, {\em rs2}, {\em rs3}, frm$^*$ & {\em rd} & NV, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FMSUB.S & {\em rs1}, {\em rs2}, {\em rs3}, frm$^*$ & {\em rd} & NV, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FNMSUB.S & {\em rs1}, {\em rs2}, {\em rs3}, frm$^*$ & {\em rd} & NV, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FNMADD.S & {\em rs1}, {\em rs2}, {\em rs3}, frm$^*$ & {\em rd} & NV, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FADD.S & {\em rs1}, {\em rs2}, frm$^*$ & {\em rd} & NV, OF, NX & $^*$if rm=111 \\ \cline{2-4} FSUB.S & {\em rs1}, {\em rs2}, frm$^*$ & {\em rd} & NV, OF, NX & $^*$if rm=111 \\ \cline{2-4} FMUL.S & {\em rs1}, {\em rs2}, frm$^*$ & {\em rd} & NV, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FDIV.S & {\em rs1}, {\em rs2}, frm$^*$ & {\em rd} & NV, DZ, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FSQRT.S & {\em rs1}, frm$^*$ & {\em rd} & NV, NX & $^*$if rm=111 \\ \cline{2-4} FSGNJ.S & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} FSGNJN.S & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} FSGNJX.S & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} FMIN.S & {\em rs1}, {\em rs2} & {\em rd} & NV & \\ \cline{2-4} FMAX.S & {\em rs1}, {\em rs2} & {\em rd} & NV & \\ \cline{2-4} FCVT.W.S & {\em rs1}, frm$^*$ & {\em rd} & NV, NX & $^*$if rm=111 \\ \cline{2-4} FCVT.WU.S & {\em rs1}, frm$^*$ & {\em rd} & NV, NX & $^*$if rm=111 \\ \cline{2-4} FMV.X.W & {\em rs1} & {\em rd} & & \\ \cline{2-4} FEQ.S & {\em rs1}, {\em rs2} & {\em rd} & NV & \\ \cline{2-4} FLT.S & {\em rs1}, {\em rs2} & {\em rd} & NV & \\ \cline{2-4} FLE.S & {\em rs1}, {\em rs2} & {\em rd} & NV & \\ \cline{2-4} FCLASS.S & {\em rs1} & {\em rd} & & \\ \cline{2-4} FCVT.S.W & {\em rs1}, frm$^*$ & {\em rd} & NX & $^*$if rm=111 \\ \cline{2-4} FCVT.S.WU & {\em rs1}, frm$^*$ & {\em rd} & NX & $^*$if rm=111 \\ \cline{2-4} FMV.W.X & {\em rs1} & {\em rd} & & \\ \cline{2-4} \end{tabular} \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV64F Standard Extension} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} FCVT.L.S & {\em rs1}, frm$^*$ & {\em rd} & NV, NX & $^*$if rm=111 \\ \cline{2-4} FCVT.LU.S & {\em rs1}, frm$^*$ & {\em rd} & NV, NX & $^*$if rm=111 \\ \cline{2-4} FCVT.S.L & {\em rs1}, frm$^*$ & {\em rd} & NX & $^*$if rm=111 \\ \cline{2-4} FCVT.S.LU & {\em rs1}, frm$^*$ & {\em rd} & NX & $^*$if rm=111 \\ \cline{2-4} \end{tabular} \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV32D Standard Extension} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} FLD$^\dagger$ & {\em rs1}$^A$ & {\em rd} & & \\ \cline{2-4} FSD & {\em rs1}$^A$, {\em rs2}$^D$ & & & \\ \cline{2-4} FMADD.D & {\em rs1}, {\em rs2}, {\em rs3}, frm$^*$ & {\em rd} & NV, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FMSUB.D & {\em rs1}, {\em rs2}, {\em rs3}, frm$^*$ & {\em rd} & NV, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FNMSUB.D & {\em rs1}, {\em rs2}, {\em rs3}, frm$^*$ & {\em rd} & NV, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FNMADD.D & {\em rs1}, {\em rs2}, {\em rs3}, frm$^*$ & {\em rd} & NV, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FADD.D & {\em rs1}, {\em rs2}, frm$^*$ & {\em rd} & NV, OF, NX & $^*$if rm=111 \\ \cline{2-4} FSUB.D & {\em rs1}, {\em rs2}, frm$^*$ & {\em rd} & NV, OF, NX & $^*$if rm=111 \\ \cline{2-4} FMUL.D & {\em rs1}, {\em rs2}, frm$^*$ & {\em rd} & NV, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FDIV.D & {\em rs1}, {\em rs2}, frm$^*$ & {\em rd} & NV, DZ, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FSQRT.D & {\em rs1}, frm$^*$ & {\em rd} & NV, NX & $^*$if rm=111 \\ \cline{2-4} FSGNJ.D & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} FSGNJN.D & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} FSGNJX.D & {\em rs1}, {\em rs2} & {\em rd} & & \\ \cline{2-4} FMIN.D & {\em rs1}, {\em rs2} & {\em rd} & NV & \\ \cline{2-4} FMAX.D & {\em rs1}, {\em rs2} & {\em rd} & NV & \\ \cline{2-4} FCVT.S.D & {\em rs1}, frm$^*$ & {\em rd} & NV, OF, UF, NX & $^*$if rm=111 \\ \cline{2-4} FCVT.D.S & {\em rs1} & {\em rd} & NV & \\ \cline{2-4} FEQ.D & {\em rs1}, {\em rs2} & {\em rd} & NV & \\ \cline{2-4} FLT.D & {\em rs1}, {\em rs2} & {\em rd} & NV & \\ \cline{2-4} FLE.D & {\em rs1}, {\em rs2} & {\em rd} & NV & \\ \cline{2-4} FCLASS.D & {\em rs1} & {\em rd} & & \\ \cline{2-4} FCVT.W.D & {\em rs1}, frm$^*$ & {\em rd} & NV, NX & $^*$if rm=111 \\ \cline{2-4} FCVT.WU.D & {\em rs1}, frm$^*$ & {\em rd} & NV, NX & $^*$if rm=111 \\ \cline{2-4} FCVT.D.W & {\em rs1} & {\em rd} & & \\ \cline{2-4} FCVT.D.WU & {\em rs1} & {\em rd} & & \\ \cline{2-4} \end{tabular} \begin{tabular}{p{3cm}|p{3cm}|p{2cm}|p{4cm}|p{4cm}} \multicolumn{4}{l}{\bf RV64D Standard Extension} \\ \cline{2-4} & Source & Destination & Accumulating \\ & Registers & Registers & CSRs \\ \cline{2-4} FCVT.L.D & {\em rs1}, frm$^*$ & {\em rd} & NV, NX & $^*$if rm=111 \\ \cline{2-4} FCVT.LU.D & {\em rs1}, frm$^*$ & {\em rd} & NV, NX & $^*$if rm=111 \\ \cline{2-4} FMV.X.D & {\em rs1} & {\em rd} & & \\ \cline{2-4} FCVT.D.L & {\em rs1}, frm$^*$ & {\em rd} & NX & $^*$if rm=111 \\ \cline{2-4} FCVT.D.LU & {\em rs1}, frm$^*$ & {\em rd} & NX & $^*$if rm=111 \\ \cline{2-4} FMV.D.X & {\em rs1} & {\em rd} & & \\ \cline{2-4} \end{tabular}