Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add zcmt #25

Merged
merged 3 commits into from
Apr 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

DATE ?= $(shell date +%Y-%m-%d)
VERSION ?= v0.0.0
REVMARK ?= Draft
REVMARK ?= Stable
DOCKER_RUN := docker run --rm -v ${PWD}:/build -w /build \
riscvintl/riscv-docs-base-container-image:latest

Expand Down
16 changes: 12 additions & 4 deletions body.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -560,6 +560,11 @@ The transfer type filter bits leverage the type definitions specified
in the
https://github.com/riscv-non-isa/riscv-trace-spec/releases/download/v2.0rc2/riscv-trace-spec.pdf[[.underline]#RISC-V Efficient Trace Spec v2.0#] (Table 4.4 and Section 4.1.1). For completeness, the definitions are reproduced below.

[NOTE]
====
_Here "indirect" is used interchangeably with "uninferrable", which is used in the trace spec. Both imply that the target of the jump is not encoded in the opcode._
====

.Control Transfer Type Definitions
[#transfer-type-defs]
[%unbreakable]
Expand All @@ -584,7 +589,7 @@ https://github.com/riscv-non-isa/riscv-trace-spec/releases/download/v2.0rc2/risc
| 15 | Other direct jump (with linkage)
|===

Encodings 8 through 15 refer to various encodings of JAL and JALR instructions. The types are distinguished as described below.
Encodings 8 through 15 refer to various encodings of jump instructions. The types are distinguished as described below.

.Control Transfer Type Definitions
[%unbreakable]
Expand All @@ -594,18 +599,21 @@ Encodings 8 through 15 refer to various encodings of JAL and JALR instructions.
.3+| Indirect call | JALR _x1_, _rs_ where _rs_ != _x5_
| JALR _x5_, _rs_ where _rs_ != _x1_
| C.JALR _rs1_ where _rs1_ != _x5_
.3+| Direct call | JAL _x1_
.4+| Direct call | JAL _x1_
| JAL _x5_
| C.JAL
| CM.JALT _index_
.2+| Indirect jump (without linkage) | JALR _x0_, _rs_ where _rs_ != (_x1_ or _x5_)
| C.JR _rs1_ where _rs1_ != (_x1_ or _x5_)
.2+| Direct jump (without linkage) | JAL _x0_
.3+| Direct jump (without linkage) | JAL _x0_
| C.J
| CM.JT _index_
.3+| Co-routine swap | JALR _x1_, _x5_
| JALR _x5_, _x1_
| C.JALR _x5_
.2+| Function return | JALR _rd_, _rs_ where _rs_ == (_x1_ or _x5_) and _rd_ != (_x1_ or _x5_)
.3+| Function return | JALR _rd_, _rs_ where _rs_ == (_x1_ or _x5_) and _rd_ != (_x1_ or _x5_)
| C.JR _rs1_ where _rs1_ == (_x1_ or _x5_)
| CM.POPRET(Z)
| Other indirect jump (with linkage) | JALR _rd_, _rs_ where _rs_ != (_x1_ or _x5_) and _rd_ != (_x0_, _x1_, or _x5_)
| Other direct jump (with linkage) | JAL _rd_ where _rd_ != (_x0_, _x1_, or _x5_)
|===
Expand Down
Loading