1
Introduction
1.1
RISC-V Hardware Platform Terminology
1.2
RISC-V Software Execution Environments and Harts
1.3
RISC-V ISA Overview
1.4
Memory
1.5
Base Instruction-Length Encoding
1.6
Exceptions, Traps, and Interrupts
1.7
UNSPECIFIED Behaviors and Values
1
RV32I Base Integer Instruction Set, Version 2.1
1.1
Programmers Model for Base Integer ISA
1.2
Base Instruction Formats
1.3
Immediate Encoding Variants
1.4
Integer Computational Instructions
1.5
Control Transfer Instructions
1.6
Load and Store Instructions
1.7
Memory Ordering Instructions
1.8
Environment Call and Breakpoints
1.9
HINT Instructions
1
RV32E and RV64E Base Integer Instruction Sets, Version 2.0
1.1
RV32E and RV64E Programmers Model
1.2
RV32E and RV64E Instruction Set Encoding
1
RV64I Base Integer Instruction Set, Version 2.1
1.1
Register State
1.2
Integer Computational Instructions
1.3
Load and Store Instructions
1.4
HINT Instructions
1
RV128I Base Integer Instruction Set, Version 1.7
1.1
Multiplication Operations
1.2
Division Operations
1.3
Zmmul Extension, Version 1.0
1.1
Specifying Ordering of Atomic Instructions
1.2
Load-Reserved/Store-Conditional Instructions
1.3
Eventual Success of Store-Conditional Instructions
1.4
Atomic Memory Operations
1.1
CSR Instructions
1.1
F Register State
1.2
Floating-Point Control and Status Register
1.3
NaN Generation and Propagation
1.4
Subnormal Arithmetic
1.5
Single-Precision Load and Store Instructions
1.6
Single-Precision Floating-Point Computational Instructions
1.7
Single-Precision Floating-Point Conversion and Move Instructions
1.8
Single-Precision Floating-Point Compare Instructions
1.9
Single-Precision Floating-Point Classify Instruction
1.1
D Register State
1.2
NaN Boxing of Narrower Values
1.3
Double-Precision Load and Store Instructions
1.4
Double-Precision Floating-Point Computational Instructions
1.5
Double-Precision Floating-Point Conversion and Move Instructions
1.6
Double-Precision Floating-Point Compare Instructions
1.7
Double-Precision Floating-Point Classify Instruction
1.1
Quad-Precision Load and Store Instructions
1.2
Quad-Precision Computational Instructions
1.3
Quad-Precision Convert and Move Instructions
1.4
Quad-Precision Floating-Point Compare Instructions
1.5
Quad-Precision Floating-Point Classify Instruction
1.1
Half-Precision Load and Store Instructions
1.2
Half-Precision Computational Instructions
1.3
Half-Precision Conversion and Move Instructions
1.4
Half-Precision Floating-Point Compare Instructions
1.5
Half-Precision Floating-Point Classify Instruction
1
RVWMO Memory Consistency Model, Version 2.0
1.1
Definition of the RVWMO Memory Model
1.2
CSR Dependency Tracking Granularity
1.3
Source and Destination Register Listings
1.1
Overview
1.2
Compressed Instruction Formats
1.3
Load and Store Instructions
1.4
Control Transfer Instructions
1.5
Integer Computational Instructions
1.6
Usage of C Instructions in LR/SC Sequences
1.7
HINT Instructions
1.8
RVC Instruction Set Listings
1.1
Atomicity Axiom for misaligned atomics
1.1
Processing of Narrower Values
1.2
Zdinx
1.3
Processing of Wider Values
1.4
Zhinx
1.5
Zhinxmin
1.6
Privileged Architecture Implications
1.1
Load-Immediate Instructions
1.2
Minimum and Maximum Instructions
1.3
Round-to-Integer Instructions
1.4
Modular Convert-to-Integer Instruction
1.5
Move Instructions
1.6
Comparison Instructions
1
RV32/64G Instruction Set Listings
1
Extending RISC-V
1.1
Extension Terminology
1.2
RISC-V Extension Design Philosophy
1.3
Extensions within fixed-width 32-bit instruction format
1.4
Adding aligned 64-bit instruction extensions
1.5
Supporting VLIW encodings
1
ISA Extension Naming Conventions
1.1
Case Sensitivity
1.2
Base Integer ISA
1.3
Instruction-Set Extension Names
1.4
Version Numbers
1.5
Underscores
1.6
Additional Standard Extension Names
1.7
Supervisor-level Instruction-Set Extensions
1.8
Machine-level Instruction-Set Extensions
1.9
Non-Standard Extension Names
1.10
Subset Naming Convention
1
History and Acknowledgments
1.2
History from Revision 1.0 of ISA manual
1.3
History from Revision 2.0 of ISA manual
1.4
Acknowledgments
1.5
History from Revision 2.1
1.6
Acknowledgments
1.7
History from Revision 2.2
1.8
Acknowledgments
1.9
History for Revision 2.3
1.10
Funding
Appendix A: RVWMO Explanatory Material, Version 0.1
A.1. Why RVWMO?
A.2. Litmus Tests
A.3. Explaining the RVWMO Rules
A.4. Beyond Main Memory
A.5. Code Porting and Mapping Guidelines
A.6. Implementation Guidelines
A.7. Known Issues
Appendix A: Formal Memory Model Specifications, Version 0.1
A.1. Formal Axiomatic Specification in Alloy
A.2. Formal Axiomatic Specification in Herd
A.3. An Operational Memory Model
Index
Bibliography