1 \documentclass[oneside
]{book
}
3 \usepackage{amssymb,amsmath
}
8 \usepackage{anyfontsize
}
9 \usepackage{ifxetex,ifluatex
}
10 \usepackage{fixltx2e
} % provides \textsubscript
11 \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=
0 % if pdftex
12 \usepackage[T1]{fontenc}
13 \usepackage[utf8
]{inputenc}
14 \else % if luatex or xelatex
20 \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase
}
22 % use upquote if available, for straight quotes in verbatim environments
23 \IfFileExists{upquote.sty
}{\usepackage{upquote
}}{}
24 % use microtype if available
25 \IfFileExists{microtype.sty
}{%
26 \usepackage[]{microtype
}
27 \UseMicrotypeSet[protrusion
]{basicmath
} % disable protrusion for tt fonts
29 \PassOptionsToPackage{hyphens
}{url
} % url is loaded by hyperref
30 \usepackage[unicode=true
]{hyperref
}
34 \usepackage[margin=
0.9in
]{geometry
}
37 \newcommand{\VerbBar}{|
}
38 \newcommand{\VERB}{\Verb[commandchars=\\\
{\
}]}
39 \DefineVerbatimEnvironment{Highlighting
}{Verbatim
}{commandchars=\\\
{\
}}
40 % Add ',fontsize=\small' for more characters per line
41 \newenvironment{Shaded
}{}{}
42 \newcommand{\KeywordTok}[1]{\textcolor[rgb
]{0.00,
0.44,
0.13}{\textbf{#1}}}
43 \newcommand{\DataTypeTok}[1]{\textcolor[rgb
]{0.56,
0.13,
0.00}{#1}}
44 \newcommand{\DecValTok}[1]{\textcolor[rgb
]{0.25,
0.63,
0.44}{#1}}
45 \newcommand{\BaseNTok}[1]{\textcolor[rgb
]{0.25,
0.63,
0.44}{#1}}
46 \newcommand{\FloatTok}[1]{\textcolor[rgb
]{0.25,
0.63,
0.44}{#1}}
47 \newcommand{\ConstantTok}[1]{\textcolor[rgb
]{0.53,
0.00,
0.00}{#1}}
48 \newcommand{\CharTok}[1]{\textcolor[rgb
]{0.25,
0.44,
0.63}{#1}}
49 \newcommand{\SpecialCharTok}[1]{\textcolor[rgb
]{0.25,
0.44,
0.63}{#1}}
50 \newcommand{\StringTok}[1]{\textcolor[rgb
]{0.25,
0.44,
0.63}{#1}}
51 \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb
]{0.25,
0.44,
0.63}{#1}}
52 \newcommand{\SpecialStringTok}[1]{\textcolor[rgb
]{0.73,
0.40,
0.53}{#1}}
53 \newcommand{\ImportTok}[1]{#1}
54 \newcommand{\CommentTok}[1]{\textcolor[rgb
]{0.38,
0.63,
0.69}{\textit{#1}}}
55 \newcommand{\DocumentationTok}[1]{\textcolor[rgb
]{0.73,
0.13,
0.13}{\textit{#1}}}
56 \newcommand{\AnnotationTok}[1]{\textcolor[rgb
]{0.38,
0.63,
0.69}{\textbf{\textit{#1}}}}
57 \newcommand{\CommentVarTok}[1]{\textcolor[rgb
]{0.38,
0.63,
0.69}{\textbf{\textit{#1}}}}
58 \newcommand{\OtherTok}[1]{\textcolor[rgb
]{0.00,
0.44,
0.13}{#1}}
59 \newcommand{\FunctionTok}[1]{\textcolor[rgb
]{0.02,
0.16,
0.49}{#1}}
60 \newcommand{\VariableTok}[1]{\textcolor[rgb
]{0.10,
0.09,
0.49}{#1}}
61 \newcommand{\ControlFlowTok}[1]{\textcolor[rgb
]{0.00,
0.44,
0.13}{\textbf{#1}}}
62 \newcommand{\OperatorTok}[1]{\textcolor[rgb
]{0.40,
0.40,
0.40}{#1}}
63 \newcommand{\BuiltInTok}[1]{#1}
64 \newcommand{\ExtensionTok}[1]{#1}
65 \newcommand{\PreprocessorTok}[1]{\textcolor[rgb
]{0.74,
0.48,
0.00}{#1}}
66 \newcommand{\AttributeTok}[1]{\textcolor[rgb
]{0.49,
0.56,
0.16}{#1}}
67 \newcommand{\RegionMarkerTok}[1]{#1}
68 \newcommand{\InformationTok}[1]{\textcolor[rgb
]{0.38,
0.63,
0.69}{\textbf{\textit{#1}}}}
69 \newcommand{\WarningTok}[1]{\textcolor[rgb
]{0.38,
0.63,
0.69}{\textbf{\textit{#1}}}}
70 \newcommand{\AlertTok}[1]{\textcolor[rgb
]{1.00,
0.00,
0.00}{\textbf{#1}}}
71 \newcommand{\ErrorTok}[1]{\textcolor[rgb
]{1.00,
0.00,
0.00}{\textbf{#1}}}
72 \newcommand{\NormalTok}[1]{#1}
76 \let \saveverbatime \@xverbatim
77 \def \@xverbatim
{\leftskip =
1cm
\relax\saveverbatime}
80 \usepackage{longtable,booktabs
}
81 % Fix footnotes in tables (requires footnote package)
82 \IfFileExists{footnote.sty
}{\usepackage{footnote
}\makesavenoteenv{long
84 \IfFileExists{parskip.sty
}{%
87 \setlength{\parindent}{0pt
}
88 \setlength{\parskip}{6pt plus
2pt minus
1pt
}
90 \setlength{\emergencystretch}{3em
} % prevent overfull lines
91 \providecommand{\tightlist}{%
92 \setlength{\itemsep}{0pt
}\setlength{\parskip}{0pt
}}
93 \setcounter{secnumdepth
}{5}
94 % Redefines (sub)paragraphs to behave more like sections
95 \ifx\paragraph\undefined\else
96 \let\oldparagraph\paragraph
97 \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
99 \ifx\subparagraph\undefined\else
100 \let\oldsubparagraph\subparagraph
101 \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
104 % set default figure placement to htbp
105 \makeatletter\@addtoreset
{chapter
}{part
}\makeatother%
106 \def\fps@figure
{htbp
}
115 \addcontentsline{toc
}{chapter
}{Preamble
} \markboth{INTRODUCTION
}{}
117 This
document is an auto-generated version of the Draft SVP64
118 Specification available at
121 https://libre-soc.org/openpower/sv
124 for which the source code is available at
127 https://git.libre-soc.org/?p=libreriscv.git;a=tree;f=openpower;hb=HEAD
130 This PDF may be created with "make pdf" from the following file:
133 https://git.libre-soc.org/?p=libreriscv.git;a=blob;f=openpower/Makefile;hb=HEAD
136 by executing the following commands:
139 git clone https://git.libre-soc.org/git/libreriscv.git libresoc
140 cd libresoc/libresoc/openpower
144 Simple-V Cray-style Vectors have been developed by the Libre-SOC Team,
145 sponsored by the NLnet Foundation and NGI POINTER under
146 EU Grants
871528 and
957073.
148 Simple-V is in DRAFT Status and will be submitted publicly
149 (non-confidentially) through the OPF ISA WG "External Submissions"
150 Process. Funding from NLnet, through their Privacy and Enhanced Trust
151 Programme, requires full transparency.
155 \part{Scalable Vectors
}
157 \chapter{Scalable Vectors for the Power ISA
}
158 \hypertarget{svux2fscalvecpowisa
}{}
159 \hypertarget{SVux7csv
}{}
160 \input{tex_out/sv.tex
}
161 \chapter{Other Vector ISAs
}\hypertarget{svux2fvector_isa_comparison
}{}
162 \input{tex_out/vector_isas.tex
}
163 \chapter{Overview
}\hypertarget{svux2foverview
}{}
164 \input{tex_out/overview.tex
}
165 \chapter{Compliancy Levels
}\hypertarget{svux2fcompliancy_levels
}{}
166 \input{tex_out/compliancy_levels.tex
}
167 \chapter{SVP64
}\hypertarget{svux2fsvp64
}{}
168 \input{tex_out/svp64.tex
}
169 \chapter{SPRs
}\hypertarget{svux2fsprs
}{}
170 \input{tex_out/sprs.tex
}
171 \chapter{Arithmetic Mode
}\hypertarget{svux2fnormal
}{}
172 \input{tex_out/normal.tex
}
173 \chapter{Load/Store Mode
}\hypertarget{svux2fldst
}{}
174 \input{tex_out/ldst.tex
}
175 \chapter{Condition Register Fields Mode
}\hypertarget{svux2fcr_ops
}{}
176 \input{tex_out/cr_ops.tex
}
177 \chapter{Branch Mode
}\hypertarget{svux2fbranches
}{}
178 \input{tex_out/branches.tex
}
179 \chapter{setvl instruction
}\hypertarget{svux2fsetvl
}{}
180 \input{tex_out/setvl.tex
}
181 \chapter{svstep instruction
}\hypertarget{svux2fsvstep
}{}
182 \input{tex_out/svstep.tex
}
183 \chapter{REMAP subsystem
}\hypertarget{svux2fremap
}{}
184 \input{tex_out/remap.tex
}
185 \chapter{Swizzle Move
}\hypertarget{svux2fmv.swizzle
}{}
186 \input{tex_out/mv_swizzle.tex
}
187 \chapter{Pack / Unpack
}\hypertarget{svux2fmv.vec
}{}
188 \input{tex_out/mv_vec.tex
}
191 \chapter{SVP64 Appendix
}\hypertarget{svp64ux2fappendix
}{}
192 \input{tex_out/svp64_appendix.tex
}
193 \chapter{SVP64 Quirks
}\hypertarget{svux2fsvp64_quirks
}{}
194 \input{tex_out/svp64_quirks.tex
}
195 \chapter{Simple-V pseudocode
}\hypertarget{svux2fpseudocode_simplev
}{}
196 \input{tex_out/pseudocode_simplev.tex
}
197 \chapter{SVP64 Augmentation Table
}\hypertarget{opcode_regs_deduped
}{}
200 \fontsize{7}{9}\selectfont
201 \input{tex_out/opcode_regs_deduped.tex
}
206 \part{Scalar Instructions
}
208 \chapter{Vector Assist ops
}\hypertarget{svux2fvector_ops
}{}
209 \input{tex_out/vector_ops.tex
}
210 \chapter{CR Weird ops
}\hypertarget{svux2fcr_int_predication
}{}
211 \input{tex_out/cr_int_predication.tex
}
212 \chapter{Bitmanip ops
}\hypertarget{svux2fbitmanip
}{}
213 \input{tex_out/bitmanip.tex
}
214 \chapter{FP/Integer conversion ops
}\hypertarget{svux2fint_fp_mv
}{}
215 \input{tex_out/int_fp_mv.tex
}
216 \chapter{FP Class ops
}\hypertarget{svux2ffclass
}{}
217 \input{tex_out/fclass.tex
}
218 \chapter{Audio/Video ops
}\hypertarget{svux2fav_opcodes
}{}
219 \input{tex_out/av_opcodes.tex
}
220 \chapter{Big Integer
}\hypertarget{svux2fbiginteger
}{}
221 \input{tex_out/big_integer.tex
}
224 \chapter{Big Integer Analysis
}\hypertarget{svux2fbigintegerux2fanalysis
}{}
225 \input{tex_out/big_integer_analysis.tex
}
226 \chapter{Bitmanip pseudocode
}\hypertarget{svux2fpseudocode_bitmanip
}{}
227 \input{tex_out/pseudocode_bitmanip.tex
}
228 \chapter{Floating Point pseudocode
}\hypertarget{svux2fpseudocode_svfparith
}{}
229 \input{tex_out/pseudocode_svfparith.tex
}
230 \chapter{Fixed Point pseudocode
}
231 \hypertarget{svux2fpseudocode_svfixedarith
}{}
232 \input{tex_out/pseudocode_svfixedarith.tex
}
235 \part{Scalar Power ISA pseudocode
}
238 \addcontentsline{toc
}{chapter
}{Preamble
} \markboth{INTRODUCTION
}{}
240 This section contains updated pseudocode from the Power ISA Specification
241 v3.0B to be executable. Several bugfixes in Power ISA v3.0B have been
242 found and reported as a direct result due to actually running the
243 pseudocode as executable code in a Simulator.
244 A Formal Correctness Proof Research Paper written by Boris
247 Additionally, with SVP64 performing element-width over-rides it is the
248 \textit{Scalar
} pseudocode that needs adapting to variable-length
249 (
\textbf{XLEN
}). Maintaining duplicate identical copies in every
250 respect
\textit{except
} for an XLEN as part of the Simple-V Specification
251 is completely pointless and a waste of time: the updates to include
253 of the Scalar Power ISA Specification. This has the added benefit
254 that it makes life much easier for
32-bit implementors, and has an
255 additional benefit of making it possible for the Scalar Power ISA
256 to extend to
128-bit in future (like RV128).
259 \chapter{Fixed Point Arithmetic pseudocode
}
260 \hypertarget{svux2fpseudocode_fixedarith
}{}
261 \input{tex_out/pseudocode_fixedarith.tex
}
262 \chapter{Fixed Point Logical pseudocode
}
263 \hypertarget{svux2fpseudocode_fixedlogical
}{}
264 \input{tex_out/pseudocode_fixedlogical.tex
}