softgpu 0.3.0

Developer-oriented GPU emulation, testing, debugging, and sanitization runtime
Documentation
# SoftGPU Functional IR path (Phase 6)

**Access date:** 2026-09-15  
**Fidelity:** `functional`  
**Marker:** `softgpu_functional_cpu_not_gfx1201_isa`  
**Does not claim:** gfx1201 ISA emulation, HIP AQL kernel success, or recovery of IR from arbitrary AMD code objects.

## Research gate (locked)

SoftGPU Phase 6 executes **SoftGPU Functional IR** (`softgpu-sfir-v1`):

- SoftGPU-owned JSON IR with an explicit schema
- Hand-translated from tiny reference C sources (or SoftGPU-authored)
- Fully disclosed ops: ids, const, add/sub/mul, kernarg load, global load/store, ret

SoftGPU does **not** assert that final AMDGPU ELF/code objects contain executable
high-level IR. Code-object parsing (Phase 5) remains metadata-only.

## Path from source to result

```text
fixtures/functional/tiny_add.ref.c     (host reference semantics)
        |  hand translation (documented)
        v
softgpu-sfir-v1 JSON / Rust builder
        |  softgpu-functional interpreter
        v
CPU global arena updates + RunReport (fidelity=functional)
```

Verify:

```bash
cargo test -p softgpu-functional --locked
cargo run --locked -- run-functional --builtin tiny_add --n 256 --wg 64
cargo run --locked -- run-functional fixtures/functional/tiny_add.sfir.json
```

## Address model

Functional “pointers” are **byte offsets** into a SoftGPU `GlobalArena`.
Kernarg is a separate host blob (pointer fields are arena offsets).

## Scheduler

Deterministic: workgroups in lexicographic order, then local ids lexicographic.
No wave/lane model yet (Phase 7).

## Honesty

All reports include `note=not_gfx1201_isa_emulation` and
`mode=softgpu_functional_cpu_not_gfx1201_isa`. HIP/HSA AQL diagnostic complete
(Phase 4) remains separate and is still not kernel success.