overdrivenpotato / overdrivenpotato/rust-psp

Missing VFPU Instructions

Open
#166 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
826
Forks
44
Avg merge
6d 10h
Merged PRs (30d)
3

Description

After #160 is merged, we are missing the following.

Missing Instructions (0/14)

? Inst Ops Enc
bvf vfpu-branch vfpu-branch
bvfl vfpu-branch vfpu-branch
bvt vfpu-branch vfpu-branch
bvtl vfpu-branch vfpu-branch
lvl.q vfpu-load16 vfpu-memory-quad
lvr.q vfpu-load16 vfpu-memory-quad
svl.q vfpu-store16 vfpu-memory-quad
svr.q vfpu-store16 vfpu-memory-quad
vcmovf vfpu-condmove vfpu-condmove
vcmovt vfpu-condmove vfpu-condmove
vcmp vfpu-compare vfpu-alu-compare
vmfvc vfpu-control-read vfpu-read-control
vmtvc vfpu-control-write vfpu-write-control
vwbn vector-unary-mod vector-imm8

Do note that lvl.q / lvr.q corrupt registers and when implemented, we should probably add a mitigation to save/restore the affected COP1 register. Shouldn't be too difficult to do with the existing macro magic.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review issue #160 and the existing VFPU instruction macro implementations first, then consult the linked VFPU documentation for the listed encodings and errata. Done means all 14 instructions are implemented, with mitigation for the corrupt COP1 registers affected by lvl.q and lvr.q.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
embedded-iot
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.