Skip to content

Commit

Permalink
Rework table macros to make a bit more sense
Browse files Browse the repository at this point in the history
Passing in the class only to feed it back to func2str as an additional
argument doesn't really make any sense, is a bit hard to follow and
bakes in an assumption about how encodings are used (that there is a
flat namespace; some uses might not even want a class if they just have
a single encoding table). Instead add RISC-V-specific wrapper macros
for each class.

Whilst here reduce some code duplication.
  • Loading branch information
jrtc27 authored and bsdjhb committed Apr 4, 2022
1 parent f55516c commit 38d7042
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 12 deletions.
22 changes: 14 additions & 8 deletions app-isaquick-riscv-macros.tex
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
\input{app-isaquick-table-macros}

\makeatletter
\newcommand{\rvcherienctabletop}{\@cherienctable{@rvcheriencusetablestr}{top}{8}}
\newcommand{\rvcherienctablesrcsrcdest}{\@cherienctable{@rvcheriencusetablestr}{srcsrcdest}{128}}
\newcommand{\rvcherienctablesrcsrc}{\@cherienctable{@rvcheriencusetablestr}{srcsrc}{32}}
\newcommand{\rvcherienctablesrc}{\@cherienctable{@rvcheriencusetablestr}{src}{32}}
\newcommand{\rvcherienctablesrcdest}{\@cherienctable{@rvcheriencusetablestr}{srcdest}{32}}
\newcommand{\rvcherienctabledest}{\@cherienctable{@rvcheriencusetablestr}{dest}{32}}
\newcommand{\rvcherienctableexpload}{\@cherienctable{@rvcheriencusetablestr}{expload}{32}}
\newcommand{\rvcherienctableexpstore}{\@cherienctable{@rvcheriencusetablestr}{expstore}{32}}
% class count
\newcommand{\@rvcherimakeenctablecmd}[2]{%
\ea\newcommand\csname rvcherienctable#1\endcsname{%
\@cherienctable{@rvcheriencusetablestr@#1}{#2}%
}%
}
\@rvcherimakeenctablecmd{top}{8}
\@rvcherimakeenctablecmd{srcsrcdest}{128}
\@rvcherimakeenctablecmd{srcsrc}{32}
\@rvcherimakeenctablecmd{src}{32}
\@rvcherimakeenctablecmd{srcdest}{32}
\@rvcherimakeenctablecmd{dest}{32}
\@rvcherimakeenctablecmd{expload}{32}
\@rvcherimakeenctablecmd{expstore}{32}

\let\rvcheriasminsnref\insnriscvref
\let\rvcheriasminsnnoref\insnnoref
Expand Down
8 changes: 4 additions & 4 deletions app-isaquick-table-macros.tex
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
\newcount\@cherienctable@tmp
\def\@cherienctable@addtoformat#1{\ea\global\ea\def\ea\@cherienctable@format\ea{\@cherienctable@format #1}}
\def\@cherienctable@addtobody#1{\ea\global\ea\def\ea\@cherienctable@body\ea{\@cherienctable@body #1}}
% [cols] func2str class count
\newcommand{\@cherienctable}[4][8]{%
% [cols] func2str count
\newcommand{\@cherienctable}[3][8]{%
\@cherienctable@cols=\numexpr(#1)\relax%
\@cherienctable@rows=\numexpr(#4+\@cherienctable@cols-1)\relax%
\@cherienctable@rows=\numexpr(#3+\@cherienctable@cols-1)\relax%
\divide\@cherienctable@rows\@cherienctable@cols%
%
\let\@cherienctable@format\@empty%
Expand Down Expand Up @@ -64,7 +64,7 @@
\ifnum\@cherienctable@col>0%
\@cherienctable@addtobody{ & }%
\fi%
\edef\@cherienctable@cell{\csname #2\endcsname{#3}{\@cherienctable@row*\@cherienctable@cols + \@cherienctable@col}}%
\edef\@cherienctable@cell{\csname #2\endcsname{\@cherienctable@row*\@cherienctable@cols + \@cherienctable@col}}%
\ifx\@cherienctable@cell\@empty%
\@cherienctable@addtobody{-}%
\else%
Expand Down
13 changes: 13 additions & 0 deletions def-riscv-insns-macros.tex
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,19 @@
\fi%
}
\newcommand{\@rvcheriencusetablestr}[2]{\csuse{@rvcheri@enc@func2tablestr@#1@\the\numexpr(#2)}}
\newcommand{\@rvcherimakeencusetablestrcmd}[1]{%
\ea\newcommand\csname @rvcheriencusetablestr@#1\endcsname[1]{%
\@rvcheriencusetablestr{#1}{##1}%
}%
}
\@rvcherimakeencusetablestrcmd{top}
\@rvcherimakeencusetablestrcmd{srcsrcdest}
\@rvcherimakeencusetablestrcmd{srcsrc}
\@rvcherimakeencusetablestrcmd{src}
\@rvcherimakeencusetablestrcmd{srcdest}
\@rvcherimakeencusetablestrcmd{dest}
\@rvcherimakeencusetablestrcmd{expload}
\@rvcherimakeencusetablestrcmd{expstore}

\let\@rvcherisubclass@tablesuffix\@empty
\define@key{@rvcherisubclass}{tablesuffix}{\def\@rvcherisubclass@tablesuffix{#1}}
Expand Down

0 comments on commit 38d7042

Please sign in to comment.