diff --git a/avs/compiler/linx-llvm/tests/analyze_coverage.py b/avs/compiler/linx-llvm/tests/analyze_coverage.py index ad8f9b4d..dd7b4e3b 100644 --- a/avs/compiler/linx-llvm/tests/analyze_coverage.py +++ b/avs/compiler/linx-llvm/tests/analyze_coverage.py @@ -75,19 +75,11 @@ def canonicalize_mnemonic(mnemonic: str) -> str: def derived_selector_mnemonics(mnemonic: str, operands: list[str]) -> Set[str]: """Recover strict current-profile aliases from selector-style objdump output.""" selector = canonicalize_mnemonic(mnemonic) - if selector == "B.DATR": - return {"B.ARG"} if not operands: return set() tileop = canonicalize_mnemonic(operands[0]) aliases = { - ("BSTART.CUBE", "ACCCVT"): "BSTART.ACCCVT", - ("BSTART.CUBE", "TMATMUL"): "BSTART.TMATMUL", - ("BSTART.CUBE", "TMATMUL.ACC"): "BSTART.TMATMUL.ACC", - ("BSTART.TMA", "TLOAD"): "BSTART.TLOAD", - ("BSTART.TMA", "TSTORE"): "BSTART.TSTORE", - ("BSTART.TMA", "TMOV"): "BSTART.TMOV", ("BSTART.TEPL", "ERCOV"): "ERCOV", ("BSTART.TEPL", "ESAVE"): "ESAVE", } @@ -166,6 +158,13 @@ def map_emitted_to_spec(emitted_mnem: str, spec_mnemonics: Set[str]) -> Optional return None if cur in spec_mnemonics: return cur + # TEPL has one raw carrier form in the architectural catalog while the + # disassembler prints the selected direct operation (for example, + # BSTART.TDIVS). Those friendly spellings are execution evidence for the + # BSTART.TEPL carrier, not for the unrelated generic BSTART form reached by + # suffix stripping. + if cur.startswith("BSTART.T") and "BSTART.TEPL" in spec_mnemonics: + return "BSTART.TEPL" while "." in cur: cur = cur.rsplit(".", 1)[0] if cur in spec_mnemonics: diff --git a/avs/compiler/linx-llvm/tests/asm/41_v057_isa_forms.s b/avs/compiler/linx-llvm/tests/asm/41_v057_isa_forms.s index 3a9a816d..334a49c4 100644 --- a/avs/compiler/linx-llvm/tests/asm/41_v057_isa_forms.s +++ b/avs/compiler/linx-llvm/tests/asm/41_v057_isa_forms.s @@ -1,11 +1,9 @@ .text v057_isa_forms: - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.DIM sp, 129, ->lb1 B.IOR [sp,sp,sp],[a0] BSTART.ACCCVT FP32 - BSTART.CUBE 3, FP32 - BSTART.FIXP 31, FP32 BSTART.TLOAD FP32 BSTART.TSTORE FP32 BSTART.TMATMUL FP16 diff --git a/avs/compiler/linx-llvm/tests/c/32_descriptor_marker.c b/avs/compiler/linx-llvm/tests/c/32_descriptor_marker.c index e1da71b0..dd804a6c 100644 --- a/avs/compiler/linx-llvm/tests/c/32_descriptor_marker.c +++ b/avs/compiler/linx-llvm/tests/c/32_descriptor_marker.c @@ -1,5 +1,5 @@ -// Emit a canonical B.ARG descriptor header opcode so mnemonic coverage includes -// descriptor-only metadata instructions in strict v0.57. -void emit_barg_marker(void) { - __asm__ volatile(".long 0x180221a3" ::: "memory"); +// Emit canonical B.DATR NORM/FP32/Zero defaults so mnemonic coverage includes +// descriptor-only metadata instructions in strict v0.57.1. +void emit_bdatr_marker(void) { + __asm__ volatile(".long 0x00001023" ::: "memory"); } diff --git a/avs/compiler/linx-llvm/tests/gen_disasm_vectors.py b/avs/compiler/linx-llvm/tests/gen_disasm_vectors.py index 21004978..de75a43f 100644 --- a/avs/compiler/linx-llvm/tests/gen_disasm_vectors.py +++ b/avs/compiler/linx-llvm/tests/gen_disasm_vectors.py @@ -47,7 +47,23 @@ def _field_width(field: dict[str, object]) -> int: def _default_field_value(field_name: str, width: int, mnemonic: str) -> int: lower = field_name.lower() upper_mnemonic = mnemonic.upper() - if width > 5: + frame_template = upper_mnemonic in { + "FENTRY", + "FEXIT", + "FRET.RA", + "FRET.STK", + } + if lower in {"dstbegin", "dstend"} and frame_template: + # Architectural RA is register encoding 10 in frame-template range + # syntax; arbitrary register 1 is not a legal single-register restore + # range for these forms. + value = 10 + elif lower == "uimm" and frame_template: + # Frame templates require an aligned, range-compatible stack size. + # The generic wide-field seed (129) encodes as 128 after the implicit + # low three zero bits and is illegal for a one-register range. + value = 8 + elif width > 5: if lower == "regdst": value = (4 << 5) | 1 # vt#1 elif lower == "srcl": diff --git a/avs/compiler/linx-llvm/tests/neg/tepl_tileop_range.s b/avs/compiler/linx-llvm/tests/neg/tepl_tileop_range.s index 65a22688..1201d7fb 100644 --- a/avs/compiler/linx-llvm/tests/neg/tepl_tileop_range.s +++ b/avs/compiler/linx-llvm/tests/neg/tepl_tileop_range.s @@ -1,3 +1,3 @@ .text bad_tepl: - BSTART.TEPL 1024, FP16 + BSTART.TEPL 4, 0, FP16 diff --git a/avs/compiler/linx-llvm/tests/run.sh b/avs/compiler/linx-llvm/tests/run.sh index baa26022..7386a060 100755 --- a/avs/compiler/linx-llvm/tests/run.sh +++ b/avs/compiler/linx-llvm/tests/run.sh @@ -285,12 +285,10 @@ if [[ -d "$ASM_DIR" ]]; then python3 "$ROOT/check_required_mnemonics.py" \ --objdump "$OUT/$BASE.objdump" \ --label "$BASE" \ - --require B.ARG \ + --require B.DATR \ --require B.DIM \ --require B.IOR \ --require BSTART.ACCCVT \ - --require BSTART.CUBE \ - --require BSTART.FIXP \ --require BSTART.TLOAD \ --require BSTART.TMATMUL \ --require BSTART.TMATMUL.ACC \ @@ -392,8 +390,8 @@ if [[ -d "$NEG_DIR" ]]; then echo "error: TEPL range negative test unexpectedly assembled" >&2 exit 1 fi - if ! grep -Eq "TileOp10 must be in range 0\\.\\.1023|TileOpcode must be in range 0\\.\\.1023|Match Instruction Error!" "$NEG_OUT/tepl_tileop_range.err"; then - echo "error: TEPL range negative test did not report a range/match failure" >&2 + if ! grep -Eq "BSTART\\.TEPL requires Mode 0\\.\\.3 and Function 0\\.\\.31|Match Instruction Error!" "$NEG_OUT/tepl_tileop_range.err"; then + echo "error: TEPL range negative test did not report the Mode/Function range failure" >&2 cat "$NEG_OUT/tepl_tileop_range.err" >&2 exit 1 fi diff --git a/avs/compiler/linx-llvm/tests/test_analyze_coverage.py b/avs/compiler/linx-llvm/tests/test_analyze_coverage.py index bbb2c104..c31f9455 100644 --- a/avs/compiler/linx-llvm/tests/test_analyze_coverage.py +++ b/avs/compiler/linx-llvm/tests/test_analyze_coverage.py @@ -15,6 +15,12 @@ coverage = importlib.util.module_from_spec(SPEC) SPEC.loader.exec_module(coverage) +VECTOR_SCRIPT = Path(__file__).with_name("gen_disasm_vectors.py") +VECTOR_SPEC = importlib.util.spec_from_file_location("gen_disasm_vectors", VECTOR_SCRIPT) +assert VECTOR_SPEC and VECTOR_SPEC.loader +vectors = importlib.util.module_from_spec(VECTOR_SPEC) +VECTOR_SPEC.loader.exec_module(vectors) + class AnalyzeCoverageTest(unittest.TestCase): def write_spec(self, root: Path, *mnemonics: str) -> Path: @@ -159,6 +165,28 @@ def test_grouped_encoding_words_are_skipped_before_mnemonic(self) -> None: self.assertEqual(report["covered_spec_mnemonics"], 1) self.assertEqual(report["unmapped_emitted_mnemonics"], []) + def test_tepl_friendly_alias_covers_raw_carrier_not_generic_bstart(self) -> None: + with tempfile.TemporaryDirectory() as temp: + root = Path(temp) + spec_data = coverage.load_isa_spec( + self.write_spec(root, "BSTART", "BSTART.TEPL") + ) + self.write_objdump(root / "out", "tepl", "BSTART.TDIVS") + + report = coverage.analyze_coverage(spec_data, root / "out") + + self.assertEqual(report["covered_spec_mnemonics"], 1) + self.assertEqual(report["missing_mnemonics"], ["BSTART"]) + self.assertEqual(report["mapped_by_test"]["tepl"], ["BSTART.TEPL"]) + + def test_frame_vector_seed_uses_legal_minimum_stack_size(self) -> None: + for mnemonic in ("FENTRY", "FEXIT", "FRET.RA", "FRET.STK"): + self.assertEqual( + vectors._default_field_value("DstBegin", 5, mnemonic), 10 + ) + self.assertEqual(vectors._default_field_value("DstEnd", 5, mnemonic), 10) + self.assertEqual(vectors._default_field_value("uimm", 12, mnemonic), 8) + def test_fail_under_returns_two_for_incomplete_observed_coverage(self) -> None: with tempfile.TemporaryDirectory() as temp: root = Path(temp) diff --git a/avs/qemu/qemu_executable_coverage_manifest.json b/avs/qemu/qemu_executable_coverage_manifest.json index e840a4a0..406b8e2d 100644 --- a/avs/qemu/qemu_executable_coverage_manifest.json +++ b/avs/qemu/qemu_executable_coverage_manifest.json @@ -5,18 +5,19 @@ "L3": "available" }, "producer": { - "refresh_command": "python3 tools/bringup/refresh_qemu_executable_coverage.py --run-id v057-d0e88a99-20260717-r1 --qemu emulator/qemu/build-v057-release/qemu-system-linx64 --apply", + "refresh_command": "python3 tools/bringup/refresh_qemu_executable_coverage.py --run-id v0571-cfc253e8-20260802-r2 --qemu-root emulator/qemu --qemu emulator/qemu/build-v0571-clean/qemu-system-linx64 --llvm-root /private/tmp/llvm-pto0571 --apply", "suite_commands": [ - "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite callret --out-dir docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1 --qemu emulator/qemu/build-v057-release/qemu-system-linx64 --clang compiler/llvm/build-linxisa-clang/bin/clang --clangxx compiler/llvm/build-linxisa-clang/bin/clang++ --lld compiler/llvm/build-linxisa-clang/bin/ld.lld --llvm-objdump compiler/llvm/build-linxisa-clang/bin/llvm-objdump --llc compiler/llvm/build-linxisa-clang/bin/llc --timeout 30.0 --require-test-id 0x0000140b --require-test-id 0x0000140c --require-test-id 0x0000140d --require-test-id 0x0000140f --require-test-id 0x00001410 --require-test-id 0x00001411 --evidence-out docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/run-evidence.json --evidence-pc 0x0000000000010fb4 --evidence-pc 0x0000000000010fca --evidence-pc 0x0000000000010fee --evidence-pc 0x0000000000010ffc --evidence-pc 0x0000000000011022 --evidence-pc 0x000000000001105a --evidence-pc 0x0000000000011070", - "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite executable_memory --out-dir docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1 --qemu emulator/qemu/build-v057-release/qemu-system-linx64 --clang compiler/llvm/build-linxisa-clang/bin/clang --clangxx compiler/llvm/build-linxisa-clang/bin/clang++ --lld compiler/llvm/build-linxisa-clang/bin/ld.lld --llvm-objdump compiler/llvm/build-linxisa-clang/bin/llvm-objdump --llc compiler/llvm/build-linxisa-clang/bin/llc --timeout 30.0 --require-test-id 0x00002201 --require-test-id 0x00002202 --require-test-id 0x00002203 --require-test-id 0x00002204 --require-test-id 0x00002205 --require-test-id 0x00002206 --require-test-id 0x00002207 --require-test-id 0x00002208 --require-test-id 0x00002209 --require-test-id 0x0000220a --require-test-id 0x0000220b --require-test-id 0x0000220c --require-test-id 0x0000220d --evidence-out docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json --evidence-pc 0x0000000000010282 --evidence-pc 0x00000000000102bc --evidence-pc 0x0000000000010302 --evidence-pc 0x000000000001033c --evidence-pc 0x00000000000103a2 --evidence-pc 0x00000000000103f2 --evidence-pc 0x0000000000010442 --evidence-pc 0x000000000001049e --evidence-pc 0x00000000000104ec --evidence-pc 0x0000000000010544 --evidence-pc 0x00000000000105a6 --evidence-pc 0x0000000000010600 --evidence-pc 0x000000000001068a", - "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite executable_scalar --out-dir docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1 --qemu emulator/qemu/build-v057-release/qemu-system-linx64 --clang compiler/llvm/build-linxisa-clang/bin/clang --clangxx compiler/llvm/build-linxisa-clang/bin/clang++ --lld compiler/llvm/build-linxisa-clang/bin/ld.lld --llvm-objdump compiler/llvm/build-linxisa-clang/bin/llvm-objdump --llc compiler/llvm/build-linxisa-clang/bin/llc --timeout 30.0 --require-test-id 0x00002501 --require-test-id 0x00002502 --require-test-id 0x00002503 --require-test-id 0x00002504 --require-test-id 0x00002505 --require-test-id 0x00002506 --require-test-id 0x00002507 --require-test-id 0x00002508 --require-test-id 0x00002509 --require-test-id 0x0000250a --require-test-id 0x0000250b --require-test-id 0x0000250c --require-test-id 0x0000250d --require-test-id 0x0000250e --require-test-id 0x0000250f --require-test-id 0x00002510 --evidence-out docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json --evidence-pc 0x0000000000010286 --evidence-pc 0x00000000000102a0 --evidence-pc 0x00000000000102b8 --evidence-pc 0x00000000000102d0 --evidence-pc 0x00000000000102e8 --evidence-pc 0x00000000000102fe --evidence-pc 0x0000000000010330 --evidence-pc 0x0000000000010346 --evidence-pc 0x000000000001035e --evidence-pc 0x0000000000010376 --evidence-pc 0x000000000001038e --evidence-pc 0x00000000000103a6 --evidence-pc 0x00000000000103de --evidence-pc 0x0000000000010456 --evidence-pc 0x00000000000104e8 --evidence-pc 0x0000000000010574", - "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite executable_integer --out-dir docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1 --qemu emulator/qemu/build-v057-release/qemu-system-linx64 --clang compiler/llvm/build-linxisa-clang/bin/clang --clangxx compiler/llvm/build-linxisa-clang/bin/clang++ --lld compiler/llvm/build-linxisa-clang/bin/ld.lld --llvm-objdump compiler/llvm/build-linxisa-clang/bin/llvm-objdump --llc compiler/llvm/build-linxisa-clang/bin/llc --timeout 30.0 --require-test-id 0x00002601 --require-test-id 0x00002602 --require-test-id 0x00002603 --require-test-id 0x00002604 --require-test-id 0x00002605 --require-test-id 0x00002606 --require-test-id 0x00002607 --require-test-id 0x00002608 --require-test-id 0x00002609 --require-test-id 0x0000260a --require-test-id 0x0000260b --require-test-id 0x0000260c --require-test-id 0x0000260d --require-test-id 0x0000260e --require-test-id 0x0000260f --evidence-out docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json --evidence-pc 0x0000000000010284 --evidence-pc 0x000000000001029c --evidence-pc 0x00000000000102b4 --evidence-pc 0x00000000000102c6 --evidence-pc 0x00000000000102da --evidence-pc 0x00000000000102ee --evidence-pc 0x0000000000010302 --evidence-pc 0x0000000000010316 --evidence-pc 0x000000000001033e --evidence-pc 0x000000000001037e --evidence-pc 0x0000000000010390 --evidence-pc 0x00000000000103a2 --evidence-pc 0x00000000000103b4 --evidence-pc 0x00000000000103c6 --evidence-pc 0x000000000001040a", - "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite v057_vector_ops --out-dir docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1 --qemu emulator/qemu/build-v057-release/qemu-system-linx64 --clang compiler/llvm/build-linxisa-clang/bin/clang --clangxx compiler/llvm/build-linxisa-clang/bin/clang++ --lld compiler/llvm/build-linxisa-clang/bin/ld.lld --llvm-objdump compiler/llvm/build-linxisa-clang/bin/llvm-objdump --llc compiler/llvm/build-linxisa-clang/bin/llc --timeout 30.0 --require-test-id 0x00001320 --require-test-id 0x00001370 --require-test-id 0x00001371 --require-test-id 0x00001372 --require-test-id 0x00001373 --require-test-id 0x00001374 --require-test-id 0x00001375 --evidence-out docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/run-evidence.json --evidence-pc 0x0000000000010278 --evidence-pc 0x0000000000010288 --evidence-pc 0x0000000000010290 --evidence-pc 0x0000000000010298 --evidence-pc 0x00000000000102b8 --evidence-pc 0x00000000000102c0 --evidence-pc 0x0000000000010324", - "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite atomic --out-dir docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v057-d0e88a99-20260717-r1 --qemu emulator/qemu/build-v057-release/qemu-system-linx64 --clang compiler/llvm/build-linxisa-clang/bin/clang --clangxx compiler/llvm/build-linxisa-clang/bin/clang++ --lld compiler/llvm/build-linxisa-clang/bin/ld.lld --llvm-objdump compiler/llvm/build-linxisa-clang/bin/llvm-objdump --llc compiler/llvm/build-linxisa-clang/bin/llc --timeout 30.0 --require-test-id 0x00007162 --require-test-id 0x00007163 --evidence-out docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v057-d0e88a99-20260717-r1/run-evidence.json --evidence-pc 0x00000000000114aa --evidence-pc 0x00000000000114b4" + "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite callret --out-dir docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2 --qemu emulator/qemu/build-v0571-clean/qemu-system-linx64 --clang /private/tmp/llvm-v0571-verify-build/bin/clang --clangxx /private/tmp/llvm-v0571-verify-build/bin/clang++ --lld /private/tmp/llvm-v0571-verify-build/bin/ld.lld --llvm-objdump /private/tmp/llvm-v0571-verify-build/bin/llvm-objdump --llc /private/tmp/llvm-v0571-verify-build/bin/llc --timeout 30.0 --require-test-id 0x0000140b --require-test-id 0x0000140c --require-test-id 0x0000140d --require-test-id 0x0000140f --require-test-id 0x00001410 --require-test-id 0x00001411 --evidence-out docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/run-evidence.json --evidence-pc 0x0000000000010fb4 --evidence-pc 0x0000000000010fca --evidence-pc 0x0000000000010fee --evidence-pc 0x0000000000010ffc --evidence-pc 0x0000000000011022 --evidence-pc 0x000000000001105a --evidence-pc 0x0000000000011070", + "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite executable_memory --out-dir docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2 --qemu emulator/qemu/build-v0571-clean/qemu-system-linx64 --clang /private/tmp/llvm-v0571-verify-build/bin/clang --clangxx /private/tmp/llvm-v0571-verify-build/bin/clang++ --lld /private/tmp/llvm-v0571-verify-build/bin/ld.lld --llvm-objdump /private/tmp/llvm-v0571-verify-build/bin/llvm-objdump --llc /private/tmp/llvm-v0571-verify-build/bin/llc --timeout 30.0 --require-test-id 0x00002201 --require-test-id 0x00002202 --require-test-id 0x00002203 --require-test-id 0x00002204 --require-test-id 0x00002205 --require-test-id 0x00002206 --require-test-id 0x00002207 --require-test-id 0x00002208 --require-test-id 0x00002209 --require-test-id 0x0000220a --require-test-id 0x0000220b --require-test-id 0x0000220c --require-test-id 0x0000220d --evidence-out docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json --evidence-pc 0x0000000000010282 --evidence-pc 0x00000000000102bc --evidence-pc 0x0000000000010302 --evidence-pc 0x000000000001033c --evidence-pc 0x00000000000103a2 --evidence-pc 0x00000000000103f2 --evidence-pc 0x0000000000010442 --evidence-pc 0x000000000001049e --evidence-pc 0x00000000000104ec --evidence-pc 0x0000000000010544 --evidence-pc 0x00000000000105a6 --evidence-pc 0x0000000000010600 --evidence-pc 0x000000000001068a", + "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite executable_scalar --out-dir docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2 --qemu emulator/qemu/build-v0571-clean/qemu-system-linx64 --clang /private/tmp/llvm-v0571-verify-build/bin/clang --clangxx /private/tmp/llvm-v0571-verify-build/bin/clang++ --lld /private/tmp/llvm-v0571-verify-build/bin/ld.lld --llvm-objdump /private/tmp/llvm-v0571-verify-build/bin/llvm-objdump --llc /private/tmp/llvm-v0571-verify-build/bin/llc --timeout 30.0 --require-test-id 0x00002501 --require-test-id 0x00002502 --require-test-id 0x00002503 --require-test-id 0x00002504 --require-test-id 0x00002505 --require-test-id 0x00002506 --require-test-id 0x00002507 --require-test-id 0x00002508 --require-test-id 0x00002509 --require-test-id 0x0000250a --require-test-id 0x0000250b --require-test-id 0x0000250c --require-test-id 0x0000250d --require-test-id 0x0000250e --require-test-id 0x0000250f --require-test-id 0x00002510 --evidence-out docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json --evidence-pc 0x0000000000010286 --evidence-pc 0x00000000000102a0 --evidence-pc 0x00000000000102b8 --evidence-pc 0x00000000000102d0 --evidence-pc 0x00000000000102e8 --evidence-pc 0x00000000000102fe --evidence-pc 0x0000000000010330 --evidence-pc 0x0000000000010346 --evidence-pc 0x000000000001035e --evidence-pc 0x0000000000010376 --evidence-pc 0x000000000001038e --evidence-pc 0x00000000000103a6 --evidence-pc 0x00000000000103de --evidence-pc 0x0000000000010456 --evidence-pc 0x00000000000104e8 --evidence-pc 0x0000000000010574", + "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite executable_integer --out-dir docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2 --qemu emulator/qemu/build-v0571-clean/qemu-system-linx64 --clang /private/tmp/llvm-v0571-verify-build/bin/clang --clangxx /private/tmp/llvm-v0571-verify-build/bin/clang++ --lld /private/tmp/llvm-v0571-verify-build/bin/ld.lld --llvm-objdump /private/tmp/llvm-v0571-verify-build/bin/llvm-objdump --llc /private/tmp/llvm-v0571-verify-build/bin/llc --timeout 30.0 --require-test-id 0x00002601 --require-test-id 0x00002602 --require-test-id 0x00002603 --require-test-id 0x00002604 --require-test-id 0x00002605 --require-test-id 0x00002606 --require-test-id 0x00002607 --require-test-id 0x00002608 --require-test-id 0x00002609 --require-test-id 0x0000260a --require-test-id 0x0000260b --require-test-id 0x0000260c --require-test-id 0x0000260d --require-test-id 0x0000260e --require-test-id 0x0000260f --evidence-out docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json --evidence-pc 0x0000000000010284 --evidence-pc 0x000000000001029c --evidence-pc 0x00000000000102b4 --evidence-pc 0x00000000000102c6 --evidence-pc 0x00000000000102da --evidence-pc 0x00000000000102ee --evidence-pc 0x0000000000010302 --evidence-pc 0x0000000000010316 --evidence-pc 0x000000000001033e --evidence-pc 0x000000000001037e --evidence-pc 0x0000000000010390 --evidence-pc 0x00000000000103a2 --evidence-pc 0x00000000000103b4 --evidence-pc 0x00000000000103c6 --evidence-pc 0x000000000001040a", + "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite v057_vector_ops --out-dir docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2 --qemu emulator/qemu/build-v0571-clean/qemu-system-linx64 --clang /private/tmp/llvm-v0571-verify-build/bin/clang --clangxx /private/tmp/llvm-v0571-verify-build/bin/clang++ --lld /private/tmp/llvm-v0571-verify-build/bin/ld.lld --llvm-objdump /private/tmp/llvm-v0571-verify-build/bin/llvm-objdump --llc /private/tmp/llvm-v0571-verify-build/bin/llc --timeout 30.0 --require-test-id 0x00001320 --require-test-id 0x00001370 --require-test-id 0x00001371 --require-test-id 0x00001372 --require-test-id 0x00001373 --require-test-id 0x00001374 --require-test-id 0x00001375 --evidence-out docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/run-evidence.json --evidence-pc 0x0000000000010278 --evidence-pc 0x0000000000010288 --evidence-pc 0x0000000000010290 --evidence-pc 0x0000000000010298 --evidence-pc 0x00000000000102b8 --evidence-pc 0x00000000000102c0 --evidence-pc 0x0000000000010324", + "LINX_VIRT_TEST_FINISHER=1 python3 avs/qemu/run_tests.py --suite atomic --out-dir docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v0571-cfc253e8-20260802-r2 --qemu emulator/qemu/build-v0571-clean/qemu-system-linx64 --clang /private/tmp/llvm-v0571-verify-build/bin/clang --clangxx /private/tmp/llvm-v0571-verify-build/bin/clang++ --lld /private/tmp/llvm-v0571-verify-build/bin/ld.lld --llvm-objdump /private/tmp/llvm-v0571-verify-build/bin/llvm-objdump --llc /private/tmp/llvm-v0571-verify-build/bin/llc --timeout 30.0 --require-test-id 0x00007162 --require-test-id 0x00007163 --evidence-out docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v0571-cfc253e8-20260802-r2/run-evidence.json --evidence-pc 0x000000000001151a --evidence-pc 0x000000000001152e" ], - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "llvm_sha": "c39f7d86ce08489b8beb0f0da9f614445a4aa8e5", - "bundle_policy": "Never overwrite old evidence bundles; publish only after all six suites pass strict validation.", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "llvm_sha": "3feb50e4e1896105746a1831d3545d690518d3b3", + "llvm_source_dirty": false, + "bundle_policy": "Never overwrite old evidence bundles; publish only after all selected suites pass strict validation.", "report_command": "python3 tools/bringup/report_qemu_executable_coverage.py --require-nonzero --require-clean" }, "evidence": [ @@ -31,8 +32,8 @@ "suite": "callret", "suite_completion_test_id": "0x00001412", "test_id": "0x0000140b", - "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/obj/14_callret_templates.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/obj/14_callret_templates.o", "instruction": { "raw_bytes_le": "4100a504", "disassembly": "FENTRY [ra ~ ra], sp!, 16", @@ -46,9 +47,9 @@ "test_symbol": "test_fret_stk_uses_stack_ra", "target_symbol": "callret_tpl_fret_stk_slot_redirect" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "3d47f2018f383b2f30b6a0d5b726603ebbb75e6f05b30f9530c322ee499816f4", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "bef6f16326c012af9b9a7246546656845c5263c2283ff1f6997eb5b527d3e42a", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/14_callret.c", @@ -70,8 +71,8 @@ "suite": "callret", "suite_completion_test_id": "0x00001412", "test_id": "0x0000140b", - "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/obj/14_callret_templates.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/obj/14_callret_templates.o", "instruction": { "raw_bytes_le": "4130a504", "disassembly": "FRET.STK [ra ~ ra], sp!, 16", @@ -85,9 +86,9 @@ "test_symbol": "test_fret_stk_uses_stack_ra", "target_symbol": "callret_tpl_fret_stk_slot_redirect" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "3d47f2018f383b2f30b6a0d5b726603ebbb75e6f05b30f9530c322ee499816f4", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "bef6f16326c012af9b9a7246546656845c5263c2283ff1f6997eb5b527d3e42a", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/14_callret.c", @@ -109,8 +110,8 @@ "suite": "callret", "suite_completion_test_id": "0x00001412", "test_id": "0x0000140c", - "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/obj/14_callret_templates.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/obj/14_callret_templates.o", "instruction": { "raw_bytes_le": "4120a504", "disassembly": "FRET.RA [ra ~ ra], sp!, 16", @@ -124,9 +125,9 @@ "test_symbol": "test_fret_ra_uses_snapshot_ra", "target_symbol": "callret_tpl_fret_ra_slot_redirect" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "3d47f2018f383b2f30b6a0d5b726603ebbb75e6f05b30f9530c322ee499816f4", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "bef6f16326c012af9b9a7246546656845c5263c2283ff1f6997eb5b527d3e42a", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/14_callret.c", @@ -148,8 +149,8 @@ "suite": "callret", "suite_completion_test_id": "0x00001412", "test_id": "0x0000140d", - "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/obj/14_callret_templates.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/obj/14_callret_templates.o", "instruction": { "raw_bytes_le": "0038", "disassembly": "C.BSTART.STD RET", @@ -163,9 +164,9 @@ "test_symbol": "test_ret_error_trailer_returns_via_ra", "target_symbol": "callret_tpl_ret_error_trailer_success" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "3d47f2018f383b2f30b6a0d5b726603ebbb75e6f05b30f9530c322ee499816f4", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "bef6f16326c012af9b9a7246546656845c5263c2283ff1f6997eb5b527d3e42a", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/14_callret.c", @@ -187,8 +188,8 @@ "suite": "callret", "suite_completion_test_id": "0x00001412", "test_id": "0x0000140f", - "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/obj/14_callret_templates.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/obj/14_callret_templates.o", "instruction": { "raw_bytes_le": "8400", "disassembly": "C.BSTART COND, 0x11032", @@ -202,9 +203,9 @@ "test_symbol": "test_c_bstart_cond_paths", "target_symbol": "callret_tpl_c_bstart_cond_taken" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "3d47f2018f383b2f30b6a0d5b726603ebbb75e6f05b30f9530c322ee499816f4", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "bef6f16326c012af9b9a7246546656845c5263c2283ff1f6997eb5b527d3e42a", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/14_callret.c", @@ -226,8 +227,8 @@ "suite": "callret", "suite_completion_test_id": "0x00001412", "test_id": "0x00001410", - "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/obj/14_callret_templates.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/obj/14_callret_templates.o", "instruction": { "raw_bytes_le": "37000300", "disassembly": "j 6", @@ -241,9 +242,9 @@ "test_symbol": "test_j_isolated", "target_symbol": "callret_tpl_j_skip_poison" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "3d47f2018f383b2f30b6a0d5b726603ebbb75e6f05b30f9530c322ee499816f4", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "bef6f16326c012af9b9a7246546656845c5263c2283ff1f6997eb5b527d3e42a", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/14_callret.c", @@ -265,8 +266,8 @@ "suite": "callret", "suite_completion_test_id": "0x00001412", "test_id": "0x00001411", - "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/obj/14_callret_templates.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/obj/14_callret_templates.o", "instruction": { "raw_bytes_le": "0f06000001200000", "disassembly": "L.BSTART.STD DIRECT, 24", @@ -280,9 +281,9 @@ "test_symbol": "test_l_bstart_direct_positive", "target_symbol": "callret_tpl_l_bstart_direct_positive" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "3d47f2018f383b2f30b6a0d5b726603ebbb75e6f05b30f9530c322ee499816f4", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/callret-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "bef6f16326c012af9b9a7246546656845c5263c2283ff1f6997eb5b527d3e42a", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/14_callret.c", @@ -304,8 +305,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x00002201", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "3e1819611100", "disassembly": "hl.lwui.po [a0, 4], ->a0, a1", @@ -319,9 +320,9 @@ "test_symbol": "test_hl_lwui_po", "target_symbol": "executable_memory_hl_lwui_po" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -343,8 +344,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x00002202", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "2e1819611100", "disassembly": "hl.lwui.pr [a0, 4], ->a0, a1", @@ -358,9 +359,9 @@ "test_symbol": "test_hl_lwui_pr", "target_symbol": "executable_memory_hl_lwui_pr" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -382,8 +383,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x00002501", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "05814106", "disassembly": "add a1, a2, ->a0", @@ -397,9 +398,9 @@ "test_symbol": "test_add", "target_symbol": "executable_scalar_add" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -421,8 +422,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x00002502", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "05914106", "disassembly": "sub a1, a2, ->a0", @@ -436,9 +437,9 @@ "test_symbol": "test_sub", "target_symbol": "executable_scalar_sub" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -460,8 +461,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x00002503", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "05a14106", "disassembly": "and a1, a2, ->a0", @@ -475,9 +476,9 @@ "test_symbol": "test_and", "target_symbol": "executable_scalar_and" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -499,8 +500,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x00002504", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "05b14106", "disassembly": "or a1, a2, ->a0", @@ -514,9 +515,9 @@ "test_symbol": "test_or", "target_symbol": "executable_scalar_or" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -538,8 +539,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x00002505", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "05c14106", "disassembly": "xor a1, a2, ->a0", @@ -553,9 +554,9 @@ "test_symbol": "test_xor", "target_symbol": "executable_scalar_xor" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -577,8 +578,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x00002506", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "05f14100", "disassembly": "sll a1, a2, ->a0", @@ -592,9 +593,9 @@ "test_symbol": "test_sll", "target_symbol": "executable_scalar_sll" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -616,8 +617,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x00002507", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "05d14100", "disassembly": "srl a1, a2, ->a0", @@ -631,9 +632,9 @@ "test_symbol": "test_srl", "target_symbol": "executable_scalar_srl" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -655,8 +656,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x00002508", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "05e14100", "disassembly": "sra a1, a2, ->a0", @@ -670,9 +671,9 @@ "test_symbol": "test_sra", "target_symbol": "executable_scalar_sra" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -694,8 +695,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x00002509", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "09814106", "disassembly": "lb [a1, a2], ->a0", @@ -709,9 +710,9 @@ "test_symbol": "test_lb", "target_symbol": "executable_scalar_lb" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -733,8 +734,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x0000250a", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "09914106", "disassembly": "lh [a1, a2], ->a0", @@ -748,9 +749,9 @@ "test_symbol": "test_lh", "target_symbol": "executable_scalar_lh" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -772,8 +773,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x0000250b", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "09a14106", "disassembly": "lw [a1, a2], ->a0", @@ -787,9 +788,9 @@ "test_symbol": "test_lw", "target_symbol": "executable_scalar_lw" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -811,8 +812,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x0000250c", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "09b14106", "disassembly": "ld [a1, a2], ->a0", @@ -826,9 +827,9 @@ "test_symbol": "test_ld", "target_symbol": "executable_scalar_ld" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -850,8 +851,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x0000250d", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "4900411e", "disassembly": "sb a1, [a0, a2]", @@ -865,9 +866,9 @@ "test_symbol": "test_sb", "target_symbol": "executable_scalar_sb" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -889,8 +890,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x0000250e", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "4910411e", "disassembly": "sh a1, [a0, a2<<1]", @@ -904,9 +905,9 @@ "test_symbol": "test_sh", "target_symbol": "executable_scalar_sh" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -928,8 +929,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x0000250f", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "49205216", "disassembly": "sw a0, [a2, a3<<2]", @@ -943,9 +944,9 @@ "test_symbol": "test_sw", "target_symbol": "executable_scalar_sw" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -967,8 +968,8 @@ "suite": "executable_scalar", "suite_completion_test_id": "0x00002510", "test_id": "0x00002510", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/obj/23_executable_scalar.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/obj/23_executable_scalar.o", "instruction": { "raw_bytes_le": "4930521e", "disassembly": "sd a1, [a2, a3<<3]", @@ -982,9 +983,9 @@ "test_symbol": "test_sd", "target_symbol": "executable_scalar_sd" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "9bbe4fb53f08b2331c62eb5f3b8b6baa5338b47447995971ca7a60b7d5e193dc", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-scalar-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "96b1db9b614ac8ee7b82225fe57da7017079d3dfd8cbd7642aa73b31e966b552", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/23_executable_scalar.c", @@ -1006,8 +1007,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x00002203", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "3e1829614100", "disassembly": "hl.lwui.upo [a0, 4], ->a0, a1", @@ -1021,9 +1022,9 @@ "test_symbol": "test_hl_lwui_upo", "target_symbol": "executable_memory_hl_lwui_upo" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -1045,8 +1046,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x00002204", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "2e1829614100", "disassembly": "hl.lwui.upr [a0, 4], ->a0, a1", @@ -1060,9 +1061,9 @@ "test_symbol": "test_hl_lwui_upr", "target_symbol": "executable_memory_hl_lwui_upr" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -1084,8 +1085,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x00002205", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "3e2859204102", "disassembly": "hl.swi.po a0, [a2, 4], ->a3", @@ -1099,9 +1100,9 @@ "test_symbol": "test_hl_swi_po", "target_symbol": "executable_memory_hl_swi_po" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -1123,8 +1124,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x00002206", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "2e2059a02102", "disassembly": "hl.swi.pr a1, [a0, 4], ->a2", @@ -1138,9 +1139,9 @@ "test_symbol": "test_hl_swi_pr", "target_symbol": "executable_memory_hl_swi_pr" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -1162,8 +1163,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x00002207", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "3e2059e02108", "disassembly": "hl.swi.upo a1, [a0, 4], ->a2", @@ -1177,9 +1178,9 @@ "test_symbol": "test_hl_swi_upo", "target_symbol": "executable_memory_hl_swi_upo" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -1201,8 +1202,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x00002208", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "2e2859604108", "disassembly": "hl.swi.upr a0, [a2, 4], ->a3", @@ -1216,9 +1217,9 @@ "test_symbol": "test_hl_swi_upr", "target_symbol": "executable_memory_hl_swi_upr" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -1240,8 +1241,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x00002209", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "1e2099e10100", "disassembly": "hl.lwuip [a1, 0], ->a1, a2", @@ -1255,9 +1256,9 @@ "test_symbol": "test_hl_lwuip", "target_symbol": "executable_memory_hl_lwuip" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -1279,8 +1280,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x0000220a", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "9e0059a04200", "disassembly": "hl.swip a3, a0, [a2, 0]", @@ -1294,9 +1295,9 @@ "test_symbol": "test_hl_swip", "target_symbol": "executable_memory_hl_swip" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -1318,8 +1319,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x0000220b", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "9e0059e04210", "disassembly": "hl.swip.u a3, a0, [a2, 8]", @@ -1333,9 +1334,9 @@ "test_symbol": "test_hl_swip_u", "target_symbol": "executable_memory_hl_swip_u" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -1357,8 +1358,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x0000220c", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "1e2819320200", "disassembly": "hl.ldip [a2, 0], ->a2, a3", @@ -1372,9 +1373,9 @@ "test_symbol": "test_hl_ldip", "target_symbol": "executable_memory_hl_ldip" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -1396,8 +1397,8 @@ "suite": "executable_memory", "suite_completion_test_id": "0x0000220d", "test_id": "0x0000220d", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/obj/22_executable_memory.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/obj/22_executable_memory.o", "instruction": { "raw_bytes_le": "de0059305100", "disassembly": "hl.sdip a0, a1, [a3, 0]", @@ -1411,9 +1412,9 @@ "test_symbol": "test_hl_sdip", "target_symbol": "executable_memory_hl_sdip" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7d45dbfa511d803d261ead5e1eee5bae989d36f32bcfde6d95918e9979efbad0", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-memory-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "4504e7a260a6fb61088530db6cf8c3bd8a9fe75b6196c8b4be75b7b3038f7ed7", "oracle": { "kind": "architectural_state", "source": "avs/qemu/tests/22_executable_memory.c", @@ -1435,8 +1436,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x00002601", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "09c14106", "disassembly": "lbu [a1, a2], ->a0", @@ -1450,9 +1451,9 @@ "test_symbol": "test_lbu", "target_symbol": "executable_integer_lbu" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1474,8 +1475,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x00002602", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "09d14106", "disassembly": "lhu [a1, a2], ->a0", @@ -1489,9 +1490,9 @@ "test_symbol": "test_lhu", "target_symbol": "executable_integer_lhu" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1513,8 +1514,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x00002603", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "09e14106", "disassembly": "lwu [a1, a2], ->a0", @@ -1528,9 +1529,9 @@ "test_symbol": "test_lwu", "target_symbol": "executable_integer_lwu" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1552,8 +1553,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x00002604", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "47814100", "disassembly": "mul a1, a2, ->a0", @@ -1567,9 +1568,9 @@ "test_symbol": "test_mul", "target_symbol": "executable_integer_mul" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1591,8 +1592,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x00002605", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "57814100", "disassembly": "div a1, a2, ->a0", @@ -1606,9 +1607,9 @@ "test_symbol": "test_div", "target_symbol": "executable_integer_div" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1630,8 +1631,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x00002606", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "57914100", "disassembly": "divu a1, a2, ->a0", @@ -1645,9 +1646,9 @@ "test_symbol": "test_divu", "target_symbol": "executable_integer_divu" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1669,8 +1670,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x00002607", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "57c14100", "disassembly": "rem a1, a2, ->a0", @@ -1684,9 +1685,9 @@ "test_symbol": "test_rem", "target_symbol": "executable_integer_rem" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1708,8 +1709,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x00002608", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "57d14100", "disassembly": "remu a1, a2, ->a0", @@ -1723,9 +1724,9 @@ "test_symbol": "test_remu", "target_symbol": "executable_integer_remu" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1747,8 +1748,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x00002609", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "45813106", "disassembly": "cmp.eq a1, a1, ->a0", @@ -1762,9 +1763,9 @@ "test_symbol": "test_cmp_eq", "target_symbol": "executable_integer_cmp_eq" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1786,8 +1787,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x0000260a", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "45913206", "disassembly": "cmp.ne a3, a1, ->a0", @@ -1801,9 +1802,9 @@ "test_symbol": "test_cmp_ne", "target_symbol": "executable_integer_cmp_ne" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1825,8 +1826,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x0000260b", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "45c14106", "disassembly": "cmp.lt a1, a2, ->a0", @@ -1840,9 +1841,9 @@ "test_symbol": "test_cmp_lt", "target_symbol": "executable_integer_cmp_lt" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1864,8 +1865,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x0000260c", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "45e14106", "disassembly": "cmp.ltu a1, a2, ->a0", @@ -1879,9 +1880,9 @@ "test_symbol": "test_cmp_ltu", "target_symbol": "executable_integer_cmp_ltu" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1903,8 +1904,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x0000260d", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "45d14106", "disassembly": "cmp.ge a1, a2, ->a0", @@ -1918,9 +1919,9 @@ "test_symbol": "test_cmp_ge", "target_symbol": "executable_integer_cmp_ge" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1942,8 +1943,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x0000260e", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "45f14106", "disassembly": "cmp.geu a1, a2, ->a0", @@ -1957,9 +1958,9 @@ "test_symbol": "test_cmp_geu", "target_symbol": "executable_integer_cmp_geu" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -1981,8 +1982,8 @@ "suite": "executable_integer", "suite_completion_test_id": "0x0000260f", "test_id": "0x0000260f", - "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/obj/24_executable_integer.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/obj/24_executable_integer.o", "instruction": { "raw_bytes_le": "f7015216", "disassembly": "csel a0, a2, a3, ->a1", @@ -1996,9 +1997,9 @@ "test_symbol": "test_csel", "target_symbol": "executable_integer_csel" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "7399701135f78e88620ac25f1c7369d5374e19f7c68f9531e753b9929667ec52", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/executable-integer-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "aeb7a6751ea48fd8a6e5bf785eefba5959a5c9739eacc6bd7d32f11a3cb19aa1", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/24_executable_integer.c", @@ -2020,8 +2021,8 @@ "suite": "v057_vector_ops", "suite_completion_test_id": "0x00001320", "test_id": "0x00001372", - "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/obj/13_v057_vector_ops_matrix.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/obj/13_v057_vector_ops_matrix.o", "instruction": { "raw_bytes_le": "7fa2000009200000", "disassembly": "v.lw.brg [ri0, lc0<<2, zero], ->vt", @@ -2035,9 +2036,9 @@ "test_symbol": "test_v_lw_brg_evidence", "target_symbol": "__linx_v057_ops_add_sub_body" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "1bfef51ff666879da0e72b8c108dcb06b8ab13d828249d660fdd59a0ca9b8b66", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "7733960a4d93b4f789c5a87bdcdcb770510f5e6f69321a563d9bc406a833c4c5", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/13_v057_vector_ops_matrix.c", @@ -2059,8 +2060,8 @@ "suite": "v057_vector_ops", "suite_completion_test_id": "0x00001320", "test_id": "0x00001370", - "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/obj/13_v057_vector_ops_matrix.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/obj/13_v057_vector_ops_matrix.o", "instruction": { "raw_bytes_le": "7f02520005801000", "disassembly": "v.add vt#1, vu#1.sw, ->vt", @@ -2074,9 +2075,9 @@ "test_symbol": "test_v_add_evidence", "target_symbol": "__linx_v057_ops_add_sub_body" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "1bfef51ff666879da0e72b8c108dcb06b8ab13d828249d660fdd59a0ca9b8b66", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "7733960a4d93b4f789c5a87bdcdcb770510f5e6f69321a563d9bc406a833c4c5", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/13_v057_vector_ops_matrix.c", @@ -2098,8 +2099,8 @@ "suite": "v057_vector_ops", "suite_completion_test_id": "0x00001320", "test_id": "0x00001373", - "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/obj/13_v057_vector_ops_matrix.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/obj/13_v057_vector_ops_matrix.o", "instruction": { "raw_bytes_le": "7fa0002049200108", "disassembly": "v.sw.brg vt#1, [ri2, lc0<<2, zero<<2]", @@ -2113,9 +2114,9 @@ "test_symbol": "test_v_sw_brg_evidence", "target_symbol": "__linx_v057_ops_add_sub_body" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "1bfef51ff666879da0e72b8c108dcb06b8ab13d828249d660fdd59a0ca9b8b66", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "7733960a4d93b4f789c5a87bdcdcb770510f5e6f69321a563d9bc406a833c4c5", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/13_v057_vector_ops_matrix.c", @@ -2137,8 +2138,8 @@ "suite": "v057_vector_ops", "suite_completion_test_id": "0x00001320", "test_id": "0x00001371", - "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/obj/13_v057_vector_ops_matrix.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/obj/13_v057_vector_ops_matrix.o", "instruction": { "raw_bytes_le": "7f02520005101100", "disassembly": "v.sub vt#2, vu#1.sw, ->vt", @@ -2152,9 +2153,9 @@ "test_symbol": "test_v_sub_evidence", "target_symbol": "__linx_v057_ops_add_sub_body" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "1bfef51ff666879da0e72b8c108dcb06b8ab13d828249d660fdd59a0ca9b8b66", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "7733960a4d93b4f789c5a87bdcdcb770510f5e6f69321a563d9bc406a833c4c5", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/13_v057_vector_ops_matrix.c", @@ -2176,8 +2177,8 @@ "suite": "v057_vector_ops", "suite_completion_test_id": "0x00001320", "test_id": "0x00001374", - "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/obj/13_v057_vector_ops_matrix.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/obj/13_v057_vector_ops_matrix.o", "instruction": { "raw_bytes_le": "7f0212004b802000", "disassembly": "v.fadd vt#1, ri2, ->vt", @@ -2191,9 +2192,9 @@ "test_symbol": "test_v_fadd_evidence", "target_symbol": "__linx_v057_ops_float_body" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "1bfef51ff666879da0e72b8c108dcb06b8ab13d828249d660fdd59a0ca9b8b66", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "7733960a4d93b4f789c5a87bdcdcb770510f5e6f69321a563d9bc406a833c4c5", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/13_v057_vector_ops_matrix.c", @@ -2215,8 +2216,8 @@ "suite": "v057_vector_ops", "suite_completion_test_id": "0x00001320", "test_id": "0x00001375", - "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/obj/13_v057_vector_ops_matrix.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/obj/13_v057_vector_ops_matrix.o", "instruction": { "raw_bytes_le": "7f0212004ba03000", "disassembly": "v.fmul vt#1, ri3, ->vt", @@ -2230,9 +2231,9 @@ "test_symbol": "test_v_fmul_evidence", "target_symbol": "__linx_v057_ops_float_body" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "1bfef51ff666879da0e72b8c108dcb06b8ab13d828249d660fdd59a0ca9b8b66", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "7733960a4d93b4f789c5a87bdcdcb770510f5e6f69321a563d9bc406a833c4c5", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/13_v057_vector_ops_matrix.c", @@ -2254,8 +2255,8 @@ "suite": "v057_vector_ops", "suite_completion_test_id": "0x00001320", "test_id": "0x00001320", - "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/obj/13_v057_vector_ops_matrix.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/obj/13_v057_vector_ops_matrix.o", "instruction": { "raw_bytes_le": "7f82110045401000", "disassembly": "v.cmp.lt lc0, ri1, ->vt", @@ -2269,9 +2270,9 @@ "test_symbol": "test_v_mixed_scalar_vector_predicate", "target_symbol": "__linx_v057_ops_mixed_pred_body" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "1bfef51ff666879da0e72b8c108dcb06b8ab13d828249d660fdd59a0ca9b8b66", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/v057-vector-ops-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "7733960a4d93b4f789c5a87bdcdcb770510f5e6f69321a563d9bc406a833c4c5", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/13_v057_vector_ops_matrix.c", @@ -2293,14 +2294,14 @@ "suite": "atomic", "suite_completion_test_id": "0x00007160", "test_id": "0x00007162", - "elf": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v057-d0e88a99-20260717-r1/obj/07_atomic_lr_srczero.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v0571-cfc253e8-20260802-r2/obj/07_atomic_lr_srczero.o", "instruction": { "raw_bytes_le": "0b01f121", "disassembly": "lr.w [a0, 0], ->a0", "object_offset": "0x42", - "elf_offset": "0x24aa", - "pc": "0x00000000000114aa", + "elf_offset": "0x251a", + "pc": "0x000000000001151a", "symbol": "atomic_lr_w_nonzero_srczero" }, "reachability": { @@ -2308,9 +2309,9 @@ "test_symbol": "test_lr_w_nonzero_srczero", "target_symbol": "atomic_lr_w_nonzero_srczero" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "c386428a32b659e574d667e5d3233b0fcd70884a5222ff0faff869154efab22d", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "39ba0d2c2d487ef1c5715cd67a5480bb4a581e945c8c593095f5ff29da21336d", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/07_atomic.c", @@ -2332,14 +2333,14 @@ "suite": "atomic", "suite_completion_test_id": "0x00007160", "test_id": "0x00007163", - "elf": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v057-d0e88a99-20260717-r1/linx-qemu-tests.elf", - "object": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v057-d0e88a99-20260717-r1/obj/07_atomic_lr_srczero.o", + "elf": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v0571-cfc253e8-20260802-r2/linx-qemu-tests.elf", + "object": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v0571-cfc253e8-20260802-r2/obj/07_atomic_lr_srczero.o", "instruction": { "raw_bytes_le": "0b011131", "disassembly": "lr.d [a0, 0], ->a0", - "object_offset": "0x4c", - "elf_offset": "0x24b4", - "pc": "0x00000000000114b4", + "object_offset": "0x56", + "elf_offset": "0x252e", + "pc": "0x000000000001152e", "symbol": "atomic_lr_d_nonzero_srczero" }, "reachability": { @@ -2347,9 +2348,9 @@ "test_symbol": "test_lr_d_nonzero_srczero", "target_symbol": "atomic_lr_d_nonzero_srczero" }, - "qemu_sha": "d0e88a99f575f87436137d91341b410e6f2f445b", - "run_evidence": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v057-d0e88a99-20260717-r1/run-evidence.json", - "run_evidence_sha256": "c386428a32b659e574d667e5d3233b0fcd70884a5222ff0faff869154efab22d", + "qemu_sha": "cfc253e844f4b0d017b2190a025c4375771f899a", + "run_evidence": "docs/bringup/gates/evidence/qemu-executable/atomic-lr-srczero-v0571-cfc253e8-20260802-r2/run-evidence.json", + "run_evidence_sha256": "39ba0d2c2d487ef1c5715cd67a5480bb4a581e945c8c593095f5ff29da21336d", "oracle": { "kind": "exact_value", "source": "avs/qemu/tests/07_atomic.c", diff --git a/avs/qemu/run_tests.py b/avs/qemu/run_tests.py index 0b8cedbd..bff31924 100644 --- a/avs/qemu/run_tests.py +++ b/avs/qemu/run_tests.py @@ -504,7 +504,6 @@ def _pto_kernel_src(name: str) -> str: PTO_TILE_KERNEL_NAMES = [ "tload_store", - "mamulb", "tmatmul_acc", "gemm", "flash_attention", @@ -513,7 +512,6 @@ def _pto_kernel_src(name: str) -> str: PTO_PARITY_KERNEL_NAMES = [ "tload_store", - "mamulb", "tmatmul_acc", "gemm", "gemm_basic", diff --git a/avs/qemu/test_run_tests.py b/avs/qemu/test_run_tests.py index 9ebe9055..0a27f73d 100644 --- a/avs/qemu/test_run_tests.py +++ b/avs/qemu/test_run_tests.py @@ -12,6 +12,14 @@ class StructuredEvidenceParsingTests(unittest.TestCase): + def test_selected_pto_kernel_names_are_current_and_catalogued(self) -> None: + selected = set(run_tests.PTO_TILE_KERNEL_NAMES) | set( + run_tests.PTO_PARITY_KERNEL_NAMES + ) + self.assertNotIn("mamulb", selected) + catalog = run_tests._load_pto_kernel_catalog() + self.assertEqual(sorted(selected - set(catalog)), []) + def test_every_declared_suite_source_exists(self) -> None: missing = { name: meta["src"] diff --git a/avs/qemu/tests/10_tile_cube.cpp b/avs/qemu/tests/10_tile_cube.cpp index 84e7e7af..96549d97 100644 --- a/avs/qemu/tests/10_tile_cube.cpp +++ b/avs/qemu/tests/10_tile_cube.cpp @@ -35,7 +35,7 @@ static void run_tmatmul_test() auto ta = pto::linx::tload(a); auto tb = pto::linx::tload(b); - auto tc = pto::linx::mamulb<8, 8, 8>(ta, tb); + auto tc = pto::linx::tmatmul<8, 8, 8>(ta, tb); pto::linx::tstore(c, tc); matmul_ref_i32_8x8(expected, a, b); @@ -67,7 +67,7 @@ static void run_tmatmul_acc_test() auto ta = pto::linx::tload(a); auto tb = pto::linx::tload(b); - auto seed = pto::linx::mamulb<8, 8, 8>(ta, tb); + auto seed = pto::linx::tmatmul<8, 8, 8>(ta, tb); auto out = pto::linx::tmatmul_acc<8, 8, 8>(seed, ta, tb); pto::linx::tstore(c, out); diff --git a/avs/qemu/tests/10_tile_cube_asm.S b/avs/qemu/tests/10_tile_cube_asm.S index 7eea808a..9ef6ed97 100644 --- a/avs/qemu/tests/10_tile_cube_asm.S +++ b/avs/qemu/tests/10_tile_cube_asm.S @@ -13,7 +13,7 @@ linx_tmatmul_bias_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 8, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> @@ -21,7 +21,7 @@ linx_tmatmul_bias_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 8, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<512B> @@ -29,7 +29,7 @@ linx_tmatmul_bias_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 1, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT last, ->t<512B> @@ -37,17 +37,19 @@ linx_tmatmul_bias_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 8, ->lb1 C.B.DIMI 8, ->lb2 + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOT t#3, t#2 - B.IOT t#1, last, ->acc<512B> + B.IOT t#1, last BSTART.ACCCVT INT32 + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOT last, ->m<512B> BSTART.TSTORE INT32 C.B.DIMI 8, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a3],[] B.IOT m#1, last, ->m<512B> @@ -66,7 +68,7 @@ linx_tgemv_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 8, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> @@ -74,7 +76,7 @@ linx_tgemv_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 8, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<512B> @@ -82,16 +84,18 @@ linx_tgemv_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 1, ->lb1 C.B.DIMI 8, ->lb2 - B.IOT t#2, t#1, last, ->acc<512B> + B.DATR normal, INT32, ZERO, cmode0, rmode0 + B.IOT t#2, t#1, last BSTART.ACCCVT INT32 + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOT last, ->m<512B> BSTART.TSTORE INT32 C.B.DIMI 8, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT m#1, last, ->m<512B> @@ -107,7 +111,7 @@ linx_tgemv_acc_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 8, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> @@ -115,7 +119,7 @@ linx_tgemv_acc_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 8, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<512B> @@ -123,25 +127,29 @@ linx_tgemv_acc_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 1, ->lb1 C.B.DIMI 8, ->lb2 - B.IOT t#2.reuse, t#1.reuse, last, ->acc<512B> + B.DATR normal, INT32, ZERO, cmode0, rmode0 + B.IOT t#2.reuse, t#1.reuse, last BSTART.ACCCVT INT32 + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOT last, ->m<512B> BSTART.TGEMV.ACC INT32 C.B.DIMI 8, ->lb0 C.B.DIMI 1, ->lb1 C.B.DIMI 8, ->lb2 - B.IOT t#2, t#1, last, ->acc<512B> + B.DATR normal, INT32, ZERO, cmode0, rmode0 + B.IOT t#2, t#1, last BSTART.ACCCVT INT32 + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOT last, ->m<512B> BSTART.TSTORE INT32 C.B.DIMI 8, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT m#1, last, ->m<512B> diff --git a/avs/qemu/tests/10_tile_integration.cpp b/avs/qemu/tests/10_tile_integration.cpp index 7620baa5..9465e55a 100644 --- a/avs/qemu/tests/10_tile_integration.cpp +++ b/avs/qemu/tests/10_tile_integration.cpp @@ -26,14 +26,12 @@ extern "C" void run_tile_integration_tests(void) #if PTO_QEMU_SMOKE constexpr uint64_t kDigestTloadStore = UINT64_C(0xA1248F48FF3C7199); - constexpr uint64_t kDigestMamulb = UINT64_C(0x5400A6A0D6991D4D); constexpr uint64_t kDigestTmatmulAcc = UINT64_C(0x2A37199ED1CBD94D); constexpr uint64_t kDigestGemm = UINT64_C(0x5400A6A0D6991D4D); constexpr uint64_t kDigestFlash = UINT64_C(0x754D619AB6075DA1); constexpr uint64_t kDigestFlashMasked = UINT64_C(0xE56690EBAB5372C9); #else constexpr uint64_t kDigestTloadStore = UINT64_C(0xABFA311400C734C3); - constexpr uint64_t kDigestMamulb = UINT64_C(0xACA73824B88635A3); constexpr uint64_t kDigestTmatmulAcc = UINT64_C(0xBA7AB93F72C13823); constexpr uint64_t kDigestGemm = UINT64_C(0xACA73824B88635A3); constexpr uint64_t kDigestFlash = UINT64_C(0x88745CBAC7A57629); @@ -75,14 +73,6 @@ extern "C" void run_tile_integration_tests(void) 0x000A6001u); test_pass(); - test_start(0x000A0007); - uart_puts("PTO kernel mamulb digest ... "); - zero(mat_c, kMatElems); - pto::kernels::pto_mamulb(mat_c, mat_a, mat_b, nullptr); - TEST_EQ64(fnv1a_bytes(mat_c, sizeof(mat_c)), kDigestMamulb, - 0x000A7001u); - test_pass(); - test_start(0x000A0008); uart_puts("PTO kernel tmatmul_acc digest ... "); zero(mat_c, kMatElems); diff --git a/avs/qemu/tests/10_tile_tepl_asm.S b/avs/qemu/tests/10_tile_tepl_asm.S index ab5a5067..62ac341f 100644 --- a/avs/qemu/tests/10_tile_tepl_asm.S +++ b/avs/qemu/tests/10_tile_tepl_asm.S @@ -13,19 +13,18 @@ ssrget 0x0033, ->a0 BSTART.TLOAD \dtype - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<2KB> BSTART.\op \dtype - B.ARG VV B.IOT t#1, last, ->t<2KB> .globl \resume \resume: ssrget 0x0034, ->a0 BSTART.TSTORE \dtype - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT t#1, last, ->t<2KB> @@ -61,7 +60,7 @@ linx_tepl_reject_acr0_trap_handler: C.B.DIMI \cols, ->lb0 C.B.DIMI \rows, ->lb1 C.B.DIMI \stride, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [\reg],[] B.IOT last, ->t<4KB> .endm @@ -71,7 +70,7 @@ linx_tepl_reject_acr0_trap_handler: C.B.DIMI 8, ->lb0 C.B.DIMI 4, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [\reg],[] B.IOT t#1, last, ->t<4KB> .endm @@ -88,7 +87,6 @@ linx_tepl_reject_acr0_trap_handler: C.B.DIMI 8, ->lb0 C.B.DIMI 4, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG VV B.IOT t#2, t#1, last, ->t<4KB> STORE_FP32 a2 @@ -107,7 +105,6 @@ linx_tepl_reject_acr0_trap_handler: C.B.DIMI 8, ->lb0 C.B.DIMI 4, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG VV B.IOT t#1, last, ->t<4KB> STORE_FP32 a1 @@ -147,7 +144,7 @@ linx_tepl_reject_acr0_trap_handler: C.B.DIMI 3, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> @@ -155,7 +152,6 @@ linx_tepl_reject_acr0_trap_handler: C.B.DIMI 3, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG VV .if \emit_datr B.DATR normal, FP32, \pad, cmode0, rmode0 .endif @@ -165,7 +161,7 @@ linx_tepl_reject_acr0_trap_handler: C.B.DIMI 4, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT t#1, last, ->t<512B> @@ -188,7 +184,7 @@ linx_tepl_reject_acr0_trap_handler: C.B.DIMI 3, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> @@ -196,7 +192,6 @@ linx_tepl_reject_acr0_trap_handler: C.B.DIMI 3, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG VV B.DATR normal, \dtype, \pad, cmode0, rmode0 B.IOT t#1, last, ->t<512B> @@ -204,7 +199,7 @@ linx_tepl_reject_acr0_trap_handler: C.B.DIMI 4, ->lb0 C.B.DIMI 128, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT t#1, last, ->t<512B> @@ -225,20 +220,19 @@ linx_treshape_bytes: C.B.DIMI 4, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> BSTART.TRESHAPE INT16 C.B.DIMI 8, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG VV B.IOT t#1, last, ->t<512B> BSTART.TSTORE INT16 C.B.DIMI 8, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT16, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT t#1, last, ->t<512B> FRET.STK [ra ~ ra], sp!, 8 @@ -252,27 +246,26 @@ linx_tconcat_f32: C.B.DIMI 3, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> BSTART.TLOAD FP32 C.B.DIMI 2, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<512B> BSTART.TCONCAT FP32 C.B.DIMI 5, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG VV B.IOT t#2, t#1, last, ->t<512B> BSTART.TSTORE FP32 C.B.DIMI 8, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT t#1, last, ->t<512B> FRET.STK [ra ~ ra], sp!, 8 @@ -284,21 +277,20 @@ linx_tgatherb_u8: FENTRY [ra ~ ra], sp!, 8 BSTART.TLOAD UINT8 C.B.DIMI 512, ->lb0 - B.ARG NORM.normal + B.DATR normal, UINT8, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> BSTART.TLOAD UINT32 C.B.DIMI 8, ->lb0 - B.ARG NORM.normal + B.DATR normal, UINT32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<512B> BSTART.TGATHERB UINT8 C.B.DIMI 8, ->lb0 - B.ARG VV B.IOT t#2, t#1, last, ->t<512B> BSTART.TSTORE UINT8 C.B.DIMI 512, ->lb0 - B.ARG NORM.normal + B.DATR normal, UINT8, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT t#1, last, ->t<512B> FRET.STK [ra ~ ra], sp!, 8 @@ -310,12 +302,11 @@ linx_tci_s32: FENTRY [ra ~ ra], sp!, 8 BSTART.TCI INT32 C.B.DIMI 8, ->lb0 - B.ARG VS B.IOR [a0],[a1] B.IOT last, ->t<512B> BSTART.TSTORE INT32 C.B.DIMI 128, ->lb0 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT t#1, last, ->t<512B> FRET.STK [ra ~ ra], sp!, 8 @@ -329,14 +320,13 @@ linx_ttri_s32: C.B.DIMI 4, ->lb0 C.B.DIMI 4, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG VS B.IOR [a0],[a1] B.IOT last, ->t<512B> BSTART.TSTORE INT32 C.B.DIMI 4, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT t#1, last, ->t<512B> FRET.STK [ra ~ ra], sp!, 8 @@ -350,21 +340,20 @@ linx_textract_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 4, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> BSTART.TEXTRACT FP32 C.B.DIMI 3, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG VS B.IOR [a1],[a2] B.IOT t#1, last, ->t<512B> BSTART.TSTORE FP32 C.B.DIMI 4, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a3],[] B.IOT t#1, last, ->t<512B> FRET.STK [ra ~ ra], sp!, 8 @@ -378,28 +367,27 @@ linx_tdequant_s8_f32: C.B.DIMI 4, ->lb0 C.B.DIMI 3, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT8, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> BSTART.TLOAD FP32 C.B.DIMI 1, ->lb0 C.B.DIMI 3, ->lb1 C.B.DIMI 1, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<512B> BSTART.TLOAD FP32 C.B.DIMI 1, ->lb0 C.B.DIMI 3, ->lb1 C.B.DIMI 1, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT last, ->t<512B> BSTART.TDEQUANT FP32 C.B.DIMI 4, ->lb0 C.B.DIMI 3, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG VV B.DATR normal, INT8, ZERO, cmode0, rmode0 B.IOT t#3, t#2 B.IOT t#1, last, ->t<512B> @@ -407,7 +395,7 @@ linx_tdequant_s8_f32: C.B.DIMI 4, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a3],[] B.IOT t#1, last, ->t<512B> FRET.STK [ra ~ ra], sp!, 8 @@ -423,7 +411,7 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> @@ -431,7 +419,7 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<512B> @@ -439,7 +427,6 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG VV B.IOT t#1, t#2, ->t<512B> B.IOT last, ->t<512B> @@ -448,7 +435,7 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT t#1, last, ->t<512B> @@ -456,7 +443,7 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a3],[] B.IOT t#1, last, ->t<512B> @@ -480,7 +467,7 @@ linx_tdequant_s8_f32: C.B.DIMI 4, ->lb0 C.B.DIMI 3, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> @@ -488,7 +475,7 @@ linx_tdequant_s8_f32: C.B.DIMI 2, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<512B> @@ -496,14 +483,13 @@ linx_tdequant_s8_f32: C.B.DIMI 4, ->lb0 C.B.DIMI 3, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG VV B.IOT t#2, t#1, last, ->t<512B> BSTART.TSTORE FP32 C.B.DIMI 4, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT t#1, last, ->t<512B> @@ -526,7 +512,7 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<512B> @@ -534,7 +520,7 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<512B> @@ -542,7 +528,7 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, UINT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT last, ->t<512B> @@ -550,7 +536,7 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, UINT32, ZERO, cmode0, rmode0 B.IOR [a3],[] B.IOT last, ->t<512B> @@ -558,7 +544,6 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG VV B.IOT t#4, t#3, ->t<512B> B.IOT t#2, t#1, last, ->u<512B> @@ -566,7 +551,7 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, FP32, ZERO, cmode0, rmode0 B.IOR [a4],[] B.IOT t#1, last, ->t<512B> @@ -574,7 +559,7 @@ linx_tdequant_s8_f32: C.B.DIMI 8, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, UINT32, ZERO, cmode0, rmode0 B.IOR [a5],[] B.IOT u#1, last, ->u<512B> @@ -600,7 +585,7 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<4KB> @@ -608,7 +593,7 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<4KB> @@ -616,7 +601,6 @@ linx_tdequant_s8_f32: C.B.DIMI 31, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG VV B.DATR normal, \dtype, ZERO, cmode\cmode, rmode0 B.IOT t#2, t#1, last, ->t<4KB> @@ -624,7 +608,7 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, UINT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT t#1, last, ->t<4KB> @@ -642,7 +626,7 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<4KB> @@ -650,7 +634,6 @@ linx_tdequant_s8_f32: C.B.DIMI 31, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG VS B.DATR normal, \dtype, ZERO, cmode\cmode, rmode0 B.IOR [a1],[] B.IOT t#1, last, ->t<4KB> @@ -659,7 +642,7 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, UINT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT t#1, last, ->t<4KB> @@ -698,7 +681,7 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<\footprint> @@ -706,7 +689,7 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<\footprint> @@ -714,14 +697,13 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG VV B.IOT t#2, t#1, last, ->t<\footprint> BSTART.TSTORE \dtype C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT t#1, last, ->t<\footprint> @@ -739,7 +721,7 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<\footprint> @@ -747,14 +729,13 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG VV B.IOT t#1, last, ->t<\footprint> BSTART.TSTORE \dtype C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dtype, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT t#1, last, ->t<\footprint> @@ -780,7 +761,7 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, \src_dtype, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<\src_footprint> @@ -788,14 +769,13 @@ linx_tdequant_s8_f32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG VV B.IOT t#1, last, ->t<\dst_footprint> BSTART.TSTORE \dst_dtype C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dst_dtype, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT t#1, last, ->t<\dst_footprint> @@ -817,7 +797,7 @@ linx_trems_s32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<4KB> @@ -825,7 +805,6 @@ linx_trems_s32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG VS B.IOR [a1],[] B.IOT t#1, last, ->t<4KB> @@ -833,7 +812,7 @@ linx_trems_s32: C.B.DIMI 32, ->lb0 C.B.DIMI 32, ->lb1 C.B.DIMI 32, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT t#1, last, ->t<4KB> @@ -853,7 +832,7 @@ linx_trems_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 8, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG NORM.normal + B.DATR normal, \src_dtype, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<4KB> @@ -861,14 +840,13 @@ linx_trems_s32: C.B.DIMI 8, ->lb0 C.B.DIMI 8, ->lb1 C.B.DIMI 8, ->lb2 - B.ARG VV B.IOT t#1, last, ->t<4KB> BSTART.TSTORE \dst_dtype C.B.DIMI \dst_cols, ->lb0 C.B.DIMI \dst_rows, ->lb1 C.B.DIMI \dst_stride, ->lb2 - B.ARG NORM.normal + B.DATR normal, \dst_dtype, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT t#1, last, ->t<4KB> @@ -895,7 +873,7 @@ linx_tsel_s32: C.B.DIMI 2, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 2, ->lb2 - B.ARG NORM.normal + B.DATR normal, UINT32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<4KB> @@ -903,7 +881,7 @@ linx_tsel_s32: C.B.DIMI 64, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 64, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<4KB> @@ -911,7 +889,7 @@ linx_tsel_s32: C.B.DIMI 64, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 64, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT last, ->t<4KB> @@ -919,7 +897,6 @@ linx_tsel_s32: C.B.DIMI 64, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 64, ->lb2 - B.ARG VV B.IOT t#3, t#2 B.IOT t#1, last, ->t<4KB> @@ -927,7 +904,7 @@ linx_tsel_s32: C.B.DIMI 64, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 64, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a3],[] B.IOT t#1, last, ->t<4KB> @@ -943,7 +920,7 @@ linx_tsels_s32: C.B.DIMI 2, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 2, ->lb2 - B.ARG NORM.normal + B.DATR normal, UINT32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<4KB> @@ -951,7 +928,7 @@ linx_tsels_s32: C.B.DIMI 64, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 64, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<4KB> @@ -959,7 +936,6 @@ linx_tsels_s32: C.B.DIMI 64, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 64, ->lb2 - B.ARG VS B.IOR [a2],[] B.IOT t#2, t#1, last, ->t<4KB> @@ -967,7 +943,7 @@ linx_tsels_s32: C.B.DIMI 64, ->lb0 C.B.DIMI 16, ->lb1 C.B.DIMI 64, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a3],[] B.IOT t#1, last, ->t<4KB> @@ -986,7 +962,7 @@ linx_tadd_rect_s32: C.B.DIMI 3, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a0],[] B.IOT last, ->t<4KB> @@ -994,7 +970,7 @@ linx_tadd_rect_s32: C.B.DIMI 3, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a1],[] B.IOT last, ->t<4KB> @@ -1002,14 +978,13 @@ linx_tadd_rect_s32: C.B.DIMI 3, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG VV B.IOT t#2, t#1, last, ->t<4KB> BSTART.TSTORE INT32 C.B.DIMI 3, ->lb0 C.B.DIMI 2, ->lb1 C.B.DIMI 4, ->lb2 - B.ARG NORM.normal + B.DATR normal, INT32, ZERO, cmode0, rmode0 B.IOR [a2],[] B.IOT t#1, last, ->t<4KB> diff --git a/avs/qemu/tests/16_pto_kernel_parity.cpp b/avs/qemu/tests/16_pto_kernel_parity.cpp index 16a378c8..23bd70ee 100644 --- a/avs/qemu/tests/16_pto_kernel_parity.cpp +++ b/avs/qemu/tests/16_pto_kernel_parity.cpp @@ -29,7 +29,6 @@ using pto::fp16_t; #endif #define PTO_PARITY_STAGE_TLOAD_STORE 1 -#define PTO_PARITY_STAGE_MAMULB 2 #define PTO_PARITY_STAGE_TMATMUL_ACC 3 #define PTO_PARITY_STAGE_GEMM 4 #define PTO_PARITY_STAGE_GEMM_BASIC 5 @@ -662,12 +661,6 @@ static void run_all_kernels_emit_digest() { if (finish_after_stage(PTO_PARITY_STAGE_TLOAD_STORE)) return; - emit_stage("mamulb"); - pto_mamulb(iC, iA, iB, &matmul_i32_cfg); - emit_digest("mamulb", fnv1a_bytes(iC, sizeof(iC))); - if (finish_after_stage(PTO_PARITY_STAGE_MAMULB)) - return; - zero_i32(iC, kMatElems); emit_stage("tmatmul_acc"); pto_tmatmul_acc(iC, iA, iB, &matmul_i32_cfg); diff --git a/compiler/llvm b/compiler/llvm index 98e6173b..3feb50e4 160000 --- a/compiler/llvm +++ b/compiler/llvm @@ -1 +1 @@ -Subproject commit 98e6173b6bd02157feeaf998d8aba63bd5b844cc +Subproject commit 3feb50e4e1896105746a1831d3545d690518d3b3 diff --git a/compiler/ptoas b/compiler/ptoas index 6e107fb5..cf2d2870 160000 --- a/compiler/ptoas +++ b/compiler/ptoas @@ -1 +1 @@ -Subproject commit 6e107fb532d2a20714aad3576be1161075c0f885 +Subproject commit cf2d2870748023b15ba2c69fed7c7ee9542f173d diff --git a/docs/architecture/README.md b/docs/architecture/README.md index 64249b2c..c8018019 100644 --- a/docs/architecture/README.md +++ b/docs/architecture/README.md @@ -5,6 +5,7 @@ Architecture-facing documentation lives under `docs/architecture/`. ## Canonical contract pages - v0.57 canonical pages: + - `docs/architecture/pto-isa-v0.57.1-upgrade-plan.md` (accepted cross-repository implementation plan; pto-spec remains normative) - `docs/architecture/v0.57-architecture-contract.md` - `docs/architecture/v0.57-encoding-decisions.md` - `docs/architecture/v0.57-hardening-policy.md` diff --git a/docs/architecture/isa-manual/src/chapters/02_isa_overview.adoc b/docs/architecture/isa-manual/src/chapters/02_isa_overview.adoc index 45c53abb..193e92a2 100644 --- a/docs/architecture/isa-manual/src/chapters/02_isa_overview.adoc +++ b/docs/architecture/isa-manual/src/chapters/02_isa_overview.adoc @@ -63,9 +63,9 @@ these are treated as **standalone blocks** that map to hardware macro execution The catalog also defines header-driven accelerator families: -* `BSTART.TMA` selector forms and aliases such as `BSTART.TLOAD`, `BSTART.TSTORE`, `BSTART.TMOV`, -* `BSTART.CUBE` selector forms and aliases such as `BSTART.TMATMUL`, `BSTART.TMATMUL.ACC`, `BSTART.ACCCVT`, -* `BSTART.TEPL` with `TileOpcode` as the first generic accelerator/template-op selector field; the canonical v0.57 - profile packs TEPL `mode/function` into `TileOpcode[5:0]` and reserves `TileOpcode[9:6]=0`. +* TMA-family typed forms such as `BSTART.TLOAD`, `BSTART.TSTORE`, and `BSTART.TMOV`, +* CUBE-family typed forms such as `BSTART.TMATMUL`, `BSTART.TMATMUL.ACC`, and `BSTART.ACCCVT`, +* `BSTART.TEPL`, whose raw header carries `Mode[1:0]` and `Function[4:0]`; the logical selector is + `(Mode << 5) | Function`. Selector values that are not explicitly assigned by the v0.57 catalog are reserved and must not acquire ad hoc semantics. diff --git a/docs/architecture/isa-manual/src/chapters/03_programming_model.adoc b/docs/architecture/isa-manual/src/chapters/03_programming_model.adoc index 13cc6253..6db46406 100644 --- a/docs/architecture/isa-manual/src/chapters/03_programming_model.adoc +++ b/docs/architecture/isa-manual/src/chapters/03_programming_model.adoc @@ -193,8 +193,8 @@ Vector reduction contract (`V.RD*` family): [[progmodel-tile]] === Tile registers (TAU) -Linx defines a tile register file used by accelerator-oriented *tile blocks* (e.g. `BSTART.TMA`, `BSTART.CUBE`, -`BSTART.MPAR`, `BSTART.MSEQ`, `BSTART.VPAR`, `BSTART.VSEQ`). +Linx defines a tile register file used by accelerator-oriented *tile blocks* (for example `BSTART.TLOAD`, +`BSTART.TMATMUL`, `BSTART.TEPL`, `BSTART.MPAR`, `BSTART.MSEQ`, `BSTART.VPAR`, and `BSTART.VSEQ`). Bring-up model: diff --git a/docs/architecture/isa-manual/src/chapters/04_block_isa.adoc b/docs/architecture/isa-manual/src/chapters/04_block_isa.adoc index 32a9028b..d53e8bd4 100644 --- a/docs/architecture/isa-manual/src/chapters/04_block_isa.adoc +++ b/docs/architecture/isa-manual/src/chapters/04_block_isa.adoc @@ -165,7 +165,7 @@ In the bring-up model, BARG includes (non-exhaustive): Additional bring-up fields used by tooling and trap recovery include: * block addresses (`BPC` / `BPCN`), -* ordering/atomic qualifiers (e.g. `AQ`/`RL` from `B.CATR/B.DATR`), and +* ordering/atomic qualifiers (`AQ`/`RL` from `B.CATR` only), and * output register mapping for split blocks. **BARG lifetime rules (bring-up):** @@ -193,30 +193,28 @@ The bring-up profile constrains certain combinations (examples): memory-sequential execution modes. * `.FP` blocks mirror `.STD` transitions but mark a floating-point execution context. -Block types beyond the scalar core (e.g. `.TMA`, `.CUBE`, `.TEPL`, `.VPAR`, `.VSEQ`, `.FIXP`) appear in the catalog as -Block Split forms. `TMA`, `CUBE`, and `TEPL` selector/descriptor semantics are defined by the v0.57 catalog; selector -space not explicitly assigned by the catalog is reserved and must not acquire ad hoc semantics. +Block types beyond the scalar core use the named TMA and CUBE direct forms plus the raw TEPL Mode/Function form. +Selector space not explicitly assigned by the PTO ISA 0.57.1 catalog is reserved and must not acquire ad hoc semantics. [[blockisa-tile]] === Tile blocks (TAU) Linx defines *tile blocks* for hardware-accelerated tile operations. A tile block is a basic block that: -* starts with a typed tile/vector header (`BSTART.TMA`, `BSTART.CUBE`, `BSTART.TEPL`, `BSTART.MPAR`, `BSTART.MSEQ`, - `BSTART.VPAR`, `BSTART.VSEQ`), and +* starts with a tile/vector header (for example `BSTART.TLOAD`, `BSTART.TMATMUL`, `BSTART.TEPL`, + `BSTART.MPAR`, `BSTART.MSEQ`, `BSTART.VPAR`, or `BSTART.VSEQ`), and * ends at `BSTOP` / `C.BSTOP` or the next block start marker. Tile blocks operate on **tile registers** (see <>), and use explicit per-block descriptors: * `B.IOT` describes tile inputs/outputs (including relative tile references and transfer sizing) * `B.IOR` describes GPR inputs/outputs for the block -* `B.ARG` carries TMA layout-format selection and pad policy for the block +* `B.DATR` carries operation-applicable datatype, rounding, saturation, layout, comparison, and pad/byte controls * `B.DIM` / `C.B.DIM*` may be used to provide block-local dimensions and valid masks via `LB0..LB2` Bring-up contract (v0.57 current profile): -* Typed block starts are canonical (`BSTART.TMA`, `BSTART.CUBE`, `BSTART.TEPL`, `BSTART.MPAR`, `BSTART.MSEQ`, `BSTART.VPAR`, - `BSTART.VSEQ`). +* Typed operation starts are canonical for TMA and CUBE. TEPL uses `BSTART.TEPL Mode, Function, DataType`. * Retired PAR-style block-start spellings are illegal and MUST be rejected. * `TLOAD`/`TSTORE` are the canonical memory-tile baseline for AI and rendering bring-up. * `TMOV` is the canonical tile-state move baseline operation in the TMA family. @@ -229,7 +227,7 @@ Bring-up contract (v0.57 current profile): **Immutability rule (design intent):** a tile block consumes input tiles and produces a new destination tile; it does not mutate the input tiles in-place. -NOTE: In the strict profile contract, `B.IOT` prints transfer size in KiB (`->t<1KB>`, `->acc<4KB>`) +NOTE: In the strict profile contract, `B.IOT` prints transfer size in KiB (for example `->t<1KB>`) and uses `last` to mark the terminal descriptor in a block header chain. Descriptor metadata may be carried by multiple `B.IOR` and `B.IOT` entries in the same header; descriptors are consumed in header order. @@ -243,10 +241,8 @@ extended below): ** `m#k` → tile-id `16+(k-1)` (16..23) ** `n#k` → tile-id `24+(k-1)` (24..31) These tile-ids name positions within the corresponding hand’s architectural tile-register queue. -* `B.IOT` `SizeCode` maps to bytes as `bytes = 2^(SizeCode+4)` with strict architectural clamp to `0B..512KB`. -* `B.IOT` (dynamic-size form) uses `RegSrc` to carry runtime output size. v0.57 accepts only values that decode - to `0B..512KB` (either direct `SizeCode` style values `5..8` or equivalent power-of-two byte counts). - Compiler/runtime MUST fail fast on out-of-range dynamic sizes. +* `B.IOT` size codes 3 through 9 map to 128 B through 8 KiB. Every other code is illegal. +* A runtime-resolved size must equal one of those accepted footprints. Compiler/runtime MUST fail fast otherwise. * `S0V` / `S1V` semantics are *inverted*: `0` means the corresponding `SrcTile*` is present as an input; `1` means absent. When a source is absent, its corresponding `SrcTile*` field is ignored and SHOULD be encoded as `0` in canonical v0.57 output. * `DstTile` encodes the destination *kind* and controls where the tile-producing engine allocates the output: @@ -254,65 +250,67 @@ extended below): ** `1`: `u` hand (U queue) ** `2`: `m` hand (M queue) ** `3`: `n` hand (N queue) -** `4`: implicit accumulator (`acc`) - (`acc`) is a singleton architectural accumulator in v0.57 (no encoded ACC depth/index). +** `4..6`: reserved +** `7`: illegal + ACC is singleton implicit state selected by CUBE function identity; it has no `B.IOT` code or depth/index. * For destination kinds `t/u/m/n`, the destination tile register is allocated implicitly as a **queue push**: ** the output becomes the new `hand#1` definition (for example `->u<4KB>` allocates a new `u#1`), ** existing definitions in that hand shift down (`hand#1→hand#2`, `hand#2→hand#3`, …), -** the oldest definition (`hand#8`) is evicted. +** allocation that would exceed the architectural queue/capacity limit raises a precise fault; there is no eviction or spill. ** for `B.IOT`, the `SizeCode` updates the newly allocated (`hand#1`) tile register’s tracked byte-size. * Input tile references (`t#k`/`u#k`/`m#k`/`n#k`) name a position in the corresponding **tile register queue**, where `k=1` is the most recent definition and larger `k` values refer to older definitions. -* `.reuse` is a staged hint bit carried on input operands. In this bring-up profile, it is required to disassemble and - re-encode deterministically, but it does not change the queue indexing rules defined above. +* `.reuse=0` releases an input only after successful consumer commit; `.reuse=1` retains it. Fault, retry, and squash preserve it. * Each `B.IOR` descriptor carries up to three source GPR bindings plus one destination GPR binding. * Canonical shader-kernel scalar imports are the ordered namespace `ri0..ri11`: ** bindings are allocated from repeated `B.IOR` descriptors in header order, ** within one descriptor, imports are assigned in `RegSrc0`, `RegSrc1`, `RegSrc2` order. * Each `B.IOT` descriptor carries up to two source-tile references plus one destination tile kind. -* `TMATMUL` / `TMATMUL.ACC` use `SrcTile0/SrcTile1` as the two tile inputs; the output is the implicit accumulator (`->acc<...>`). +* `TMATMUL` / `TMATMUL.ACC` use `SrcTile0/SrcTile1` as the two tile inputs; the output is implicit ACC state. * `group=0` means the header descriptor chain continues. * `group=1` is the terminal descriptor form in bring-up streams and is rendered as `last` in disassembly. * Archived raw material that relies on other `group` values is not part of canonical v0.57 and remains reserved/illegal. * `B.IOR` disassembly omits zero GPR inputs/outputs and prints the input list in encoding order (`RegSrc0`, `RegSrc1`, `RegSrc2`) (for example, `[s0,a6],[]`). -v0.57 tile header encoding families (the bit layout is inherited unchanged -from v0.57): +v0.57.1 tile header encoding families: * `BSTART.TMA`: `31..27=DataType`, `26..25=00`, `24..20=Function`, `19..15=00010`, `14..0` fixed block-split tail. -* `BSTART.CUBE`: `31..27=DataType`, `26..25=00`, `24..20=Function`, `19..15=00110`, `14..0` fixed block-split tail. -* `BSTART.TEPL`: `31..27=DataType`, `26..25=01`, `24..15=TileOpcode`, `14..0` fixed block-split tail. +* CUBE-family typed forms: `31..27=DataType`, `26..25=00`, `24..20=Function`, `19..15=00110`, `14..0` fixed block-split tail. +* TEPL-family typed forms: `31..27=DataType`, `26..25=Mode`, `24..20=Function`, `19..0` fixed block-split tail. * `BSTART.VPAR`: `26..25=Mode`, `19..15=00100` with fixed block-split tail. * `BSTART.VSEQ`: `26..25=Mode`, `19..15=00101` with fixed block-split tail. v0.57 tile `DataType` field assignments (u5, inherited unchanged): -* Floating: `FP64=0`, `FP32=1`, `FP16=2`, `FP8=3`, `BF16=6`, `FPL8=7`, `FP4=11`, `FPL4=12`. -* Signed integer: `INT64=16`, `INT32=17`, `INT16=18`, `INT8=19`, `INT4=20`. -* Unsigned integer: `UINT64=24`, `UINT32=25`, `UINT16=26`, `UINT8=27`, `UINT4=28`. -* Unassigned values are reserved and MUST NOT appear in canonical streams. +* Floating: `FP64=0`, `FP32=1`, `TF32=2`, `HF32=3`, `FP16=4`, `BF16=5`, + `HiF8=6`, `E4M3=7`, `E5M2=8`, `E3M2=9`, `E2M3=10`, + `E2M1X2=11`, `E1M2X2=12`, `E8M0=13`, and `HiF4X2=14`. +* Signed integer: `S64=16`, `S32=17`, `S16=18`, `S8=19`, `S4X2=20`. +* Unsigned integer: `U64=24`, `U32=25`, `U16=26`, `U8=27`, `U4X2=28`. +* Codes 15, 21-23, and 29-30 are reserved. Code 31 is illegal. v0.57 named-form policy (normative): -* TMA, CUBE, and TEPL name binary encoding families. The TMA family has no - generic legal assembly form; each allocated function has an exact - `BSTART.` instruction form. +* TMA, CUBE, and TEPL name binary encoding families. TMA and CUBE have no generic + legal assembly form; each allocated function has an exact `BSTART.` form. + TEPL has one legal `BSTART.TEPL Mode, Function, DataType` form whose accepted + mode/function pairs come from the locked catalog. * Named mnemonics are explicit v0.57 instruction forms in the golden catalog and resolve to encoding selectors: -** `BSTART.TLOAD` -> `BSTART.TMA Function=0` -** `BSTART.TSTORE` -> `BSTART.TMA Function=1` -** `BSTART.TMOV` -> `BSTART.TMA Function=2` -** `BSTART.TPREFETCH` -> `BSTART.TMA Function=3` -** `BSTART.MGATHER` -> `BSTART.TMA Function=4` -** `BSTART.MSCATTER` -> `BSTART.TMA Function=5` -** `BSTART.MGATHER.MASK` -> `BSTART.TMA Function=6` -** `BSTART.MSCATTER.MASK` -> `BSTART.TMA Function=7` -** `BSTART.MGATHER.CAS` -> `BSTART.TMA Function=8` -** `BSTART.TMATMUL` -> `BSTART.CUBE Function=0` -** `BSTART.TMATMUL.ACC` -> `BSTART.CUBE Function=2` -** `BSTART.ACCCVT` -> `BSTART.CUBE Function=8` -** `BSTART.TADD`, `BSTART.TSUB`, `BSTART.TROWMAX`, ... -> `BSTART.TEPL TileOpcode=` +** `BSTART.TLOAD` -> TMA `Function=0` +** `BSTART.TSTORE` -> TMA `Function=1` +** `BSTART.TMOV` -> TMA `Function=2` +** `BSTART.TPREFETCH` -> TMA `Function=3` +** `BSTART.MGATHER` -> TMA `Function=4` +** `BSTART.MSCATTER` -> TMA `Function=5` +** `BSTART.MGATHER.MASK` -> TMA `Function=6` +** `BSTART.MSCATTER.MASK` -> TMA `Function=7` +** `BSTART.MGATHER.CAS` -> TMA `Function=8` +** `BSTART.TMATMUL` -> CUBE `Function=0` +** `BSTART.TMATMUL.ACC` -> CUBE `Function=2` +** `BSTART.ACCCVT` -> CUBE `Function=8` +** `TADD`, `TSUB`, `TROWMAX`, ... -> `BSTART.TEPL Mode=, Function=` * TMA `Function=9..31` encodings are reserved and MUST raise an illegal-instruction exception. They are not instruction forms and MUST NOT contribute to legal-form or executable-coverage denominators. @@ -338,49 +336,33 @@ v0.57 CUBE named `Function` assignments: * `8` => `ACCCVT` * `16/17/18` => `TGEMV` / `TGEMV.BIAS` / `TGEMV.ACC` * `20/21/22` => `TGEMVMX` / `TGEMVMX.BIAS` / `TGEMVMX.ACC` -* Other 5-bit CUBE values retain the generic - `BSTART.CUBE Function, DataType` spelling. +* Other 5-bit CUBE values are reserved and raise an illegal-instruction exception. -v0.57 TEPL tile opcode allocation policy: +v0.57.1 TEPL mode/function allocation policy: * The authoritative machine-readable selector map is `isa/v0.57/state/pto_encoding_map.json`. -* The inherited v0.57 assignments use a packed low-6-bit selector inside - the 10-bit `TileOpcode` field: -** `TileOpcode[5]` is the 1-bit TEPL mode selector. -** `TileOpcode[4:0]` is the TEPL function selector. -** canonical packed rule: `TileOpcode = (Mode << 5) | Function`. -* `Mode=0` defines the 32-entry base TEPL function set: -** `0x00=TADD`, `0x01=TSUB`, `0x02=TMUL`, `0x03=TDIV`, `0x04=TMAX`, `0x05=TMIN`, `0x06=TAND`, `0x07=TOR` -** `0x08=TXOR`, `0x09=TSHL`, `0x0A=TSHR`, `0x0B=TRELU`, `0x0C=TPRELU`, `0x0D=TCVT`, `0x0E=TEXP`, `0x0F=TLOG` -** `0x10=TSQRT`, `0x11=TRSQRT`, `0x12=TROWMAX`, `0x13=TROWMIN`, `0x14=TROWSUM`, `0x15=TCOLMAX`, `0x16=TCOLMIN`, - `0x17=TCOLSUM` -** `0x18=TRECIP`, `0x19=TEXPANDS`, `0x1A=TGATHER`, `0x1B=TSCATTER`, `0x1C=TRESHAPE`, `0x1D=TTRANSPOSE`, - `0x1E=TCOLEXPAND`, `0x1F=TROWEXPAND` -* `Mode=1` defines the scalar-RHS TEPL extension window: -** `0x20=TADDS`, `0x21=TSUBS`, `0x22=TMULS`, `0x23=TDIVS`, `0x24=TMAXS`, `0x25=TMINS`, `0x26=TANDS`, - `0x27=TORS`, `0x28=TXORS`, `0x29=TSHLS`, `0x2A=TSHRS` -* v0.57 allocates every selector in `0x02B..0x048`, plus the explicitly - assigned banks `0x080..0x08B`, `0x0C0..0x0C8`, and `0x0E0..0x0E3`. - These values are direct 10-bit selectors and are not decoded through the - inherited Mode/Function interpretation. +* The raw header carries `Mode[1:0]` and `Function[4:0]`. +* The canonical logical selector is `(Mode << 5) | Function`. +* The catalog assigns exactly 98 unique selectors across Modes 0 through 3; + the remaining 30 selector positions are reserved and illegal. +* Canonical names include `TTRANS`; `TTRANSPOSE` and `TSORT32` are + migration-only source aliases and never decode as instruction identities. * Tile-scalar extension ops require `B.IOR` scalar RHS binding as defined by the op profile. - NOTE (toolchain convention): when a TEPL op requires scalar RHS data, place the binding in the first `B.IOR` entry where practical, even though implementations must accept any `B.IOR` position defined by the op profile. -Unassigned tile opcode values are reserved/illegal in canonical v0.57. +Unassigned TEPL mode/function pairs are reserved/illegal in canonical v0.57.1. Canonical toolchains MUST reject them and implementations MUST NOT assign ad -hoc semantics. In particular, `0x049..0x07F`, `0x08C..0x0BF`, -`0x0C9..0x0DF`, and `0x0E4..0x3FF` are reserved. +hoc semantics. v0.57 `TMOV` contracts: * `TMOV` is a tile-state operation; it MUST NOT directly access GM memory. * For `DstTile` kinds `t/u/m/n`, destination allocation is queue-push only (new `hand#1`). * Explicit destination depth encoding (`->t#k`/`->u#k`/`->m#k`/`->n#k`) is not part of v0.57. -* `B.IOT` size semantics for `TMOV` follow the same strict `SizeCode` clamp (`0B..512KB`) as `TLOAD/TSTORE`. -* `B.ARG` provides TMOV mode selection in the canonical profile; `V2V` and `A2V` are defined, and all other modes are - reserved/illegal until a future catalog revision assigns them. +* `B.IOT` size codes 3 through 9 select 128 B through 8 KiB; other codes are illegal. +* Layout conversion is selected only by an operation-applicable `B.DATR.Layout` value and is capability gated. v0.57 TMA assignments: @@ -401,40 +383,34 @@ v0.57 TMA assignments: checks and fault behavior required for the corresponding `TLOAD` footprint. * Generic mixed TMA textual forms remain illegal in canonical v0.57 sources. The legal public spelling is the assigned `BSTART.` form. -* The expanded PTO map is frozen in `isa/v0.57/state/pto_encoding_map.json`: all 111 workbook rows have one TMA, - CUBE, or TEPL disposition, and review-only names are rejected. -* v0.57 adds named CUBE aliases for Functions 1, 4-6, 16-18, and 20-22. The inherited generic - `BSTART.CUBE Function, DataType` form remains legal, so values without a named alias retain only the generic decode. +* The PTO map is frozen in `isa/v0.57/state/pto_encoding_map.json`: exactly 120 operations have one TMA, + CUBE, or TEPL disposition, and deleted or review-only names are rejected. +* CUBE Functions 1, 4-6, 16-18, and 20-22 have typed operation forms; every other unassigned function is illegal. v0.57 block split patterns and per-family constraints: -* `BSTART.TLOAD` / `BSTART.TSTORE` (alias of `BSTART.TMA Function=0/1`): -** require `B.ARG` for layout/pad selection. +* `BSTART.TLOAD` / `BSTART.TSTORE` (named TMA Functions 0/1): +** use operation-applicable `B.DATR` layout/pad controls; inapplicable non-zero fields are illegal. ** require at least one `B.IOR` binding carrying base/stride arguments (strict profile convention: stride and base are explicit scalar inputs). ** strict binding convention is `RegSrc0=stride/ld`, `RegSrc1=base` when both are present. ** require tile binding via `B.IOT`. ** are header-driven block commands (no SIMT body; do not use `B.TEXT`). * `BSTART.TMATMUL`, `BSTART.TMATMUL.BIAS`, `BSTART.TMATMUL.ACC`, `BSTART.TMATMULMX*`, - `BSTART.TGEMV*`, and `BSTART.TGEMVMX*` (named aliases of their assigned CUBE functions): + `BSTART.TGEMV*`, and `BSTART.TGEMVMX*` (assigned named CUBE-family functions): ** require `B.DIM`/`C.B.DIM*` with `LB0/LB1/LB2` bound as `m/n/k`. -** require two source tile inputs via `B.IOT`. -** both commands target the singleton implicit accumulator domain (`->acc`). +** bind the exact source roles from `pto_ops.json` via `B.IOT` (left/right, plus bias or scale sources where applicable). +** write the singleton implicit accumulator; B.IOT carries no ACC source or destination code. ** `TMATMUL` seeds/replaces accumulator state; `TMATMUL.ACC` accumulates into the current accumulator state. ** no explicit accumulator tile id is encoded in the inherited descriptors. ** strict chain contract: `TMATMUL` starts ACC state, `TMATMUL.ACC` may repeat, and `ACCCVT` materializes tile output. ** are header-driven block commands (no SIMT body; do not use `B.TEXT`). -* `BSTART.ACCCVT` (alias of `BSTART.CUBE Function=8`): -** requires quantization arguments. -** quantization arguments are carried by `B.ARG` (quantization mode) plus `B.IOR` scalar bindings (`scale` and - `zero-point` are required; optional extra scalar controls are profile-defined). +* `BSTART.ACCCVT` (named CUBE-family Function 8): +** conversion controls are carried by the operation-applicable `B.DATR` fields `Sat`, `Canonicalize`, `DataType`, `RMode`, and `Layout`. ** consumes the singleton implicit accumulator state and writes a converted tile destination. ** descriptors bind only destination tile metadata (`->t/u/m/n`); no accumulator source id is encoded. ** is header-driven (no SIMT body; do not use `B.TEXT`). * `BSTART.TEPL`: -** operation is selected only by the tile opcode (`TileOpcode`). -** inherited selectors through `0x02A` preserve the v0.57 packed - `Mode/Function` identity; v0.57 selectors above that range use their - explicit manifest values. +** operation is selected only by the raw `Mode` and `Function` fields. ** descriptor requirements are op-profile-specific, but tile and scalar bindings MUST still be expressed through block descriptors. ** PTO template-op forms (`TADD`, `TSUB`, `TROWMAX`, etc.) are header-driven in v0.57 (no SIMT body). * `BSTART.VPAR` / `BSTART.VSEQ`: @@ -448,9 +424,9 @@ Future encoding-space growth policy: ** `isa/v0.57/opcodes/lx_32.opc` ** the alias table above ** strict profile checks and regression tests. -* TEPL uses a 10-bit tile opcode selector (`TileOpcode`, 0..1023). New - assignments MUST be added to the v0.57 manifest and MUST NOT occupy a - reserved hole implicitly. +* TEPL uses a two-bit Mode and five-bit Function selector. New assignments + MUST be added to a later normative manifest and MUST NOT occupy a reserved + pair implicitly. * Future banks MUST be assigned explicitly by a later revision and carried by its machine-readable selector manifest. @@ -474,12 +450,11 @@ The v0.57 catalog includes the following descriptor families: - `B.IOR`: binds GPR inputs/outputs for a block. - `B.IOT`: binds tile inputs/outputs for a block (including optional input reuse and transfer sizing). * **Block arguments** - - `B.ARG`: writes a per-block argument used by TMA tile load/store pipelines (layout format + pad policy). - `B.DIM`: writes a block argument register (`LB0`–`LB2`) used for loop bounds, dimensions, and valid masks. * **Block attributes and hints** - - `B.CATR/B.DATR`: full encoded fields are `{C, DR, DataLayout[4:0], DataType[4:0], PadValue[4:0], T, aq, atom, far, rl}`. - Strict TMA execution does not source dtype/layout/pad from `B.CATR/B.DATR`; layout/pad come from `B.ARG` and datatype from - `BSTART.`. + - `B.CATR`: controls dependency, trap/far, atomic, acquire, and release behavior. + - `B.DATR`: carries `CMode`, the PadValue/ByteId union, saturation, canonicalization, + datatype, rounding mode, and layout. Every non-zero field must be applicable to the selected operation. - `B.HINT`: sets performance hints (branch likelihood, temperature, prefetch sizing, trace markers). * **Text/offset annotations** - `B.TEXT`: in a decoupled block header, selects the out-of-line body entrypoint (`BodyTPC`). In coupled blocks it @@ -517,25 +492,25 @@ AI-oriented behavior: The canonical v0.57 auto-mode profile maps PTO tile primitives to typed TAU block headers and descriptors: * `PTO TLOAD`: - `BSTART.TLOAD` + `B.DIM(LB0/LB1/LB2)` + `B.ARG` + `B.IOR*` + `B.IOT` + `BSTART.TLOAD` + `B.DIM(LB0/LB1/LB2)` + applicable `B.DATR` + `B.IOR*` + `B.IOT` * `PTO TSTORE`: - `BSTART.TSTORE` + `B.DIM(LB0/LB1/LB2)` + `B.ARG` + `B.IOR*` + `B.IOT` + `BSTART.TSTORE` + `B.DIM(LB0/LB1/LB2)` + applicable `B.DATR` + `B.IOR*` + `B.IOT` * `PTO TMOV`: - `BSTART.TMOV` + `B.ARG` + optional `B.DIM/B.IOR` + `B.IOT` + `BSTART.TMOV` + applicable `B.DATR` + optional `B.DIM/B.IOR` + `B.IOT` * `PTO TMATMUL`: `BSTART.TMATMUL` (+ ACC convert/output block when needed) * `PTO TMATMUL_ACC`: `BSTART.TMATMUL.ACC` (+ ACC convert/output block when needed) -* `PTO vec template ops` (`TADD`, `TSUB`, `TROWMAX`, ...): - `BSTART.TEPL()` + descriptor stream (`B.ARG`/`B.IOR`/`B.IOT`) as required by the op profile. +* `PTO template ops` (`TADD`, `TSUB`, `TROWMAX`, ...): + `BSTART.TEPL` with assigned Mode/Function plus the descriptor stream required by the operation contract. Normative notes: -* `B.ARG + B.IOR` are both required for descriptor-rich `TLOAD/TSTORE`. +* `B.DATR + B.IOR` are required when their operation-specific contracts request datatype/layout/pad and scalar bindings. * `TLOAD/TSTORE` dtype comes from encoded `BSTART.TMA` selector state (surfaced as `BSTART.TLOAD/BSTART.TSTORE` aliases), - and pad policy comes from `B.ARG` (not `B.CATR/B.DATR`). -* `TMOV` mode/convert policy comes from `B.ARG`; destination tile kind/size comes from `B.IOT`. -* TEPL template-op selection is carried by `BSTART.TEPL TileOpcode`; no standalone `TVEC` header encoding exists. + and applicable pad/layout policy comes from `B.DATR`. +* `TMOV` layout/convert policy comes from applicable `B.DATR` fields; destination tile kind/size comes from `B.IOT`. +* TEPL template-op selection is carried by raw Mode/Function fields; no standalone `TVEC` header encoding exists. * Multiple `B.IOR` and `B.IOT` descriptors in one header are legal and consumed in order. * Strict CUBE chain: `TMATMUL` seeds ACC, zero or more `TMATMUL.ACC` update ACC, then `ACCCVT` materializes tile output. * Compiler strict checks MUST reject `TMATMUL.ACC`/`ACCCVT` when the accumulator dependency does not derive from @@ -697,7 +672,7 @@ The architectural interface between the first and second layer is a block comman live-outs. ** `B.IOT`: performs tile rename, computes input/output tile base addresses, and packs those addresses into the command payload. -** `B.ARG` / `B.CATR/B.DATR`: pack block-type-defined immediates/attributes. +** `B.CATR/B.DATR`: pack block-type-defined control and data attributes. ** `B.DIM`: packs block dimensions (`LB0..LB2`) for SIMT/vector replay and for tile engines. ** `B.TEXT`: packs the out-of-line body `TPC` for decoupled blocks. * `BSTOP` (or an implicit boundary at the next block start marker) finalizes the command and dispatches it to the @@ -714,9 +689,9 @@ The architectural interface between the first and second layer is a block comman `BSTART.TEPL` provides a generic extensible block type for implementation-defined in-core accelerators and for PTO template-op families (`TADD`, `TSUB`, `TROWMAX`, etc.). -* `BSTART.TEPL` headers use the same descriptor families (`B.CATR/B.DATR`, `B.ARG`, `B.IOR`, `B.IOT`) as other decoupled +* TEPL-family typed headers use the same descriptor families (`B.CATR/B.DATR`, `B.IOR`, `B.IOT`) as other decoupled blocks. -* `TileOpcode` is the tile opcode selector; `DataType` is carried in the same header. +* `Mode` and `Function` select the operation; `DataType` is carried in the same header. * TEPL template ops are header-driven and do not require a separate SIMT body selector. * `BSTART.TEPL` blocks must follow the same block-boundary legality rules and must not directly bypass the memory and privilege contracts defined in this manual. diff --git a/docs/architecture/isa-manual/src/chapters/07_templates.adoc b/docs/architecture/isa-manual/src/chapters/07_templates.adoc index 5984e09e..08ef97ee 100644 --- a/docs/architecture/isa-manual/src/chapters/07_templates.adoc +++ b/docs/architecture/isa-manual/src/chapters/07_templates.adoc @@ -27,7 +27,7 @@ For `TemplateKind.class=0` (marker/template opcodes), the following mnemonic-enu * `8 = ERCOV` * `9..255` reserved -NOTE: For `TemplateKind.class=1` (TEPL templates), identification uses the tile opcode selector (`TileOpcode`), not this enum. +NOTE: For `TemplateKind.class=1` (TEPL templates), identification uses `(Mode << 5) | Function`, not this enum. Template blocks execute via a **code-template generator** that emits a sequence of internal micro-operations (*micro-ops*) based on architectural register inputs. diff --git a/docs/architecture/isa-manual/src/chapters/08_tile_blocks.adoc b/docs/architecture/isa-manual/src/chapters/08_tile_blocks.adoc index f79c11bb..41792b6e 100644 --- a/docs/architecture/isa-manual/src/chapters/08_tile_blocks.adoc +++ b/docs/architecture/isa-manual/src/chapters/08_tile_blocks.adoc @@ -22,9 +22,9 @@ Unless stated otherwise: Tile/vector block headers use the standard descriptor families: * `B.DIM` — dimension/loop counters and/or operand extents -* `B.ARG` — layout and per-op argument payload (layout defaults may exist per-op) +* `B.DATR` — operation-applicable datatype, layout, rounding, comparison, and pad/byte controls * `B.IOR` — stride/base/scalar register bindings (memory addressing) -* `B.IOT` — tile binding and tile size (strict range `0B..512KB`) +* `B.IOT` — tile binding and tile size (codes 3 through 9 select 128 B through 8 KiB) * `B.TEXT` — body pointer for SIMT vector blocks (group-granular kernel body) [[tileblocks-vvec]] @@ -64,7 +64,7 @@ MissingDescFamily numeric IDs (from `TRAPARG0[7:0]`, for quick reference): * `0 = B.* (generic descriptor stream / non-family-specific)` * `1 = B.DIM` * `2 = B.TEXT` -* `3 = B.ARG` +* `3 = B.CATR/B.DATR` * `4 = B.IOR` * `5 = B.IOT` Other descriptors (tile inputs, register in/out bindings, etc.) are kernel-defined and may be mandatory for specific @@ -79,7 +79,7 @@ The rendering-oriented v0.57 profile inherits the frozen v0.57 tile conventions * the canonical carrier is a 4KB `1024x1` row-major tile, * fragment and hot-state transport is SoA-oriented, * TAU operations are tile-to-tile only, -* small or rarely-changing state is descriptor-driven (`B.ARG`, `B.IOR`), while hot/large state uses dedicated StateTiles, +* small or rarely-changing state is descriptor-driven (`B.DATR`, `B.DIM`, `B.IOR`), while hot/large state uses dedicated StateTiles, * `MPAR` VEC kernels are the required functional fallback for rendering PTOs when no TAU hardening exists. [[tileblocks-tma]] @@ -91,7 +91,7 @@ These blocks do not have a SIMT body (`B.TEXT` is not used). Mandatory header descriptors: -* `B.ARG` is **mandatory** (layout/pad). +* `B.DATR` is required when the operation uses non-default layout/pad controls. * `B.IOR` is **mandatory** (stride/base). * `B.IOT` is **mandatory** (tile binding + tile size). @@ -111,14 +111,14 @@ Mandatory header descriptors: Optional descriptors: -* `B.ARG` is optional when the layout is default **ND**. - - Normative defaulting: if `B.ARG` is absent, the layout is **ND**. -* `B.ARG` is required when non-default layout/transform is requested (e.g. transpose/reshape). +* `B.DATR` selects an operation-applicable layout conversion; NORM is the mandatory default and other layouts are capability gated. [[tileblocks-cube]] === CUBE / tensor blocks (`TMATMUL`, `TMATMUL.ACC`, `ACCCVT`) -`BSTART.TMATMUL` / `BSTART.TMATMUL.ACC` / `BSTART.ACCCVT` are aliases of `BSTART.CUBE` selectors. +`BSTART.TMATMUL`, `BSTART.TMATMUL.ACC`, and `BSTART.ACCCVT` are named +CUBE-family forms. Their assigned function values are part of the frozen +0.57.1 selector map; no generic executable `BSTART.CUBE` form exists. These blocks do not have a SIMT body (`B.TEXT` is not used). @@ -128,7 +128,7 @@ Mandatory header descriptors: * `B.DIM` is **mandatory** and specifies `m/n/k` via `LB0/LB1/LB2`. * `B.IOT` is **mandatory** (bind operand tiles and sizes). -* `B.ARG` is **mandatory** (CUBE uses a fixed layout contract for left/right matrices). +* `B.DATR` is required when a non-default, supported matrix layout is selected. ==== `ACCCVT` @@ -141,4 +141,4 @@ Mandatory header descriptors: * `B.DIM` is **mandatory**. * `B.IOT` is **mandatory** (bind destination tile + size). -* `B.ARG` + `B.IOR` are **mandatory** (quantization arguments and scalar bindings). +* Applicable `B.DATR` fields plus `B.IOR` are **mandatory** for quantization controls and scalar bindings. diff --git a/docs/architecture/isa-manual/src/chapters/09_memory_operations.adoc b/docs/architecture/isa-manual/src/chapters/09_memory_operations.adoc index 23e0d2b4..0939547c 100644 --- a/docs/architecture/isa-manual/src/chapters/09_memory_operations.adoc +++ b/docs/architecture/isa-manual/src/chapters/09_memory_operations.adoc @@ -63,7 +63,7 @@ Rules: * Address footprint is 2D and derived from descriptor state: - dimensions from `LB0/LB1/LB2` (`B.DIM` / `C.B.DIM*`) - - layout-conversion selector and pad policy from `B.ARG` + - layout-conversion selector and pad policy from `B.DATR` - GPR bindings from one-or-more `B.IOR` descriptors - tile IO bindings and transfer size from one-or-more `B.IOT` - element data type from `BSTART.TMA` @@ -75,13 +75,11 @@ Layout and dimension contract (v0.57 current profile for TMA): - `DN` (column-major), - `NZ` (inner-block row-major + inter-block column-major), - `ZN` (inner-block column-major + inter-block row-major). -* `B.ARG` encodes one unified format selector for the current TMA tile-memory operation. -* The only legal format selectors are: - - `NORM.normal` (source and destination layout are the same), - - `ND2NZ.normal`, - - `ND2ZN.normal`, - - `DN2NZ.normal`, - - `DN2ZN.normal`. +* `B.DATR.Layout` encodes the layout selector for the current TMA operation. +* `NORM` (code 0) is mandatory. Accepted conversion codes are + `1, 3, 4, 6, 8, 9, 17, 18, 20, 27, 28, 30`; they require an advertised + capability and fault precisely before effects when unsupported. Layouts + involving `ZZ` or `NN` are reserved. * For both `TLOAD` and `TSTORE`, `NZ`/`ZN` always denotes the TR-side layout; GM-side layout is `ND` or `DN`. * `LB0/LB1/LB2` are interpreted for TLOAD/TSTORE as: - `LB0`: GM-side inner element count @@ -110,7 +108,7 @@ Layout and dimension contract (v0.57 current profile for TMA): Padding contract (TLOAD): * If TR-side logical size is larger than GM-side logical size, elements outside the GM-side footprint are synthesized in - TR according to the pad policy encoded in `B.ARG`. + TR according to the operation-applicable pad policy encoded in `B.DATR`. * Required pad policies are: - `Null`: implementation-defined non-deterministic fill (bring-up model may use deterministic pseudo-random fill), - `Zero`: fill with numeric zero, @@ -136,11 +134,10 @@ Bring-up (auto-mode) binding convention for `B.IOR` in `TLOAD/TSTORE`: Canonical v0.57 profile constraints: -* `B.ARG + B.IOR` are mandatory in descriptor-rich `TLOAD/TSTORE` headers. -* TMA execution state is not sourced from `B.CATR/B.DATR`; `TLOAD/TSTORE` consume only `BSTART/B.ARG/B.DIM/B.IOR/B.IOT`. +* Applicable `B.DATR` fields plus `B.IOR` are mandatory in descriptor-rich `TLOAD/TSTORE` headers. +* TMA execution consumes the typed block start and applicable `B.CATR/B.DATR/B.DIM/B.IOR/B.IOT` state. * Repeated `B.IOR` and repeated `B.IOT` are legal and are consumed in header order. -* `B.IOT` dynamic-size descriptors are legal only when `RegSrc` resolves to strict `0B..512KB`; runtime rejects invalid - dynamic sizes. +* A runtime-resolved `B.IOT` size is legal only when it equals an accepted 128 B through 8 KiB footprint. * For bring-up code size, emit `C.B.DIMI` for `LB0/LB1/LB2` when the value fits in `imm8` (and `RegSrc=zero`). * Raw `group=2` material and broad fixed-pipe/TCVT metadata flows are reserved/illegal in canonical v0.57 until a future catalog revision assigns explicit semantics. @@ -155,7 +152,7 @@ For completeness: v0.57 also permits non-memory typed TMA headers `BSTART.TMOV < (encoding: `BSTART.TMA Function=2`), but those are governed by <> (not by memory-operation semantics). `B.IOT` descriptor rendering uses `last` for the terminal descriptor and prints transfer footprints in KiB (for example -`->t<1KB>`, `->acc<4KB>`). The strict architectural range is `0B..512KB`. +`->t<1KB>`). ACC is implicit and is never encoded as a `B.IOT` identity. [[memory-mcall]] === Shader-kernel boundary semantics (`MPAR` / `MSEQ`) diff --git a/docs/architecture/isa-manual/src/chapters/10_system_and_privilege.adoc b/docs/architecture/isa-manual/src/chapters/10_system_and_privilege.adoc index e2c685be..811b2198 100644 --- a/docs/architecture/isa-manual/src/chapters/10_system_and_privilege.adoc +++ b/docs/architecture/isa-manual/src/chapters/10_system_and_privilege.adoc @@ -223,7 +223,7 @@ Template replay flags (bring-up): * Implementations SHOULD expose a single EBARG register `EBARG_TPLFLAGS_ACRm` with template trap/replay flags. The bit layout is defined in <> (see `EBARG_TPLFLAGS_ACRn`). * `TPL_ID` for marker templates (`TemplateKind.class=0`) uses the mnemonic-enum mapping in <>. * For marker templates (`TemplateKind.class=0`), `TPL_ID_PRESENT` MUST be `1` (reporting is required). -* For TEPL templates (`TemplateKind.class=1`), `TPL_ID_PRESENT` MUST be `1` and `TPL_ID` MUST carry the raw tile opcode selector (`TileOpcode`). +* For TEPL templates (`TemplateKind.class=1`), `TPL_ID_PRESENT` MUST be `1` and `TPL_ID` MUST carry `(Mode << 5) | Function`. * `TPL_REDO_OK=1`: handler may restart the template from the beginning only when no externally visible partial side effects exist. * `TPL_RESUME_OK=1`: template supports and permits resume via an `EBSTATE` snapshot. * `TPL_PHASE` standard meanings: @@ -261,7 +261,7 @@ NOTE: Restartable body-fetch faults are represented by the underlying MMU transl - `0 = B.* (generic descriptor stream / non-family-specific)` - `1 = B.DIM` - `2 = B.TEXT` - - `3 = B.ARG` + - `3 = B.CATR/B.DATR` - `4 = B.IOR` - `5 = B.IOT` - `TRAPARG0[15:8] = MissingDetail` (standard meanings): @@ -272,7 +272,7 @@ NOTE: Restartable body-fetch faults are represented by the underlying MMU transl - upper bits reserved `0` - If multiple mandatory descriptor families are missing, implementations MUST report exactly one missing family. The reporting priority order is: - 1. `B.ARG` + 1. `B.CATR/B.DATR` 2. `B.TEXT` 3. `B.IOT` 4. `B.IOR` @@ -346,7 +346,7 @@ NOTE: earlier draft text previously used `E_INST(EC_ILLEGAL)` and `E_INST(EC_PAR For system calls (`TRAPNUM=SCALL` in v0.2), routing is defined by the `ACRC` `request_type` rules above. [[system-template-integrity-fail]] -====== Template-integrity `ASSERT_FAIL` +===== Template-integrity `ASSERT_FAIL` `ASSERT_FAIL (52)` has two distinct producers in v0.57: @@ -490,7 +490,7 @@ Unless otherwise specified, fields are **XLEN** wide. Addresses are byte address * `BSTATE.Template` (template blocks such as `FENTRY`/`FEXIT`/`FRET.*`/`MCOPY`/`MSET`): ** `TemplateKind`: which template is executing (packed `class,id`). *** `class=0`: marker/template opcodes (`FENTRY`/`FEXIT`/`FRET.*`/`MCOPY`/`MSET`/...) with `id` = opcode-specific enum. -*** `class=1`: `BSTART.TEPL` templates with `id` = tile opcode (`TileOpcode`, 0..1023). +*** `class=1`: TEPL templates with `id = (Mode << 5) | Function` (0..127). *** `class=2`: reserved for future (implementation-defined templates). *** `class=3`: reserved. ** `StepIndex`: micro-op progress cursor. diff --git a/docs/architecture/isa-manual/src/chapters/15_bbd.adoc b/docs/architecture/isa-manual/src/chapters/15_bbd.adoc index 0585c175..1e91147d 100644 --- a/docs/architecture/isa-manual/src/chapters/15_bbd.adoc +++ b/docs/architecture/isa-manual/src/chapters/15_bbd.adoc @@ -6,7 +6,7 @@ The Block Boundary Delimiters (BBD) group defines the instructions that mark the beginning and end of template blocks and carry block-transition metadata. The block-structured control-flow model is defined in <>; this chapter documents the individual instruction forms. -**Block start** (`BSTART.*`): a `BSTART.*` both terminates the current block and begins the next block. It encodes the target block type (`.STD`, `.SYS`, `.FP`, `.MPAR`, `.MSEQ`, `.VPAR`, `.VSEQ`, `.TMA`, `.CUBE`, `.TEPL`, `.FIXP`) and the transition kind (`FALL`, `DIRECT`, `COND`, `CALL`, `IND`, `ICALL`, `RET`). A bare `CALL` transition records only its branch target and preserves `ra`; a returning call is preceded immediately by `SETRET` or `C.SETRET` carrying an explicit return label. Compressed `C.BSTART.*` forms encode the most common transitions in 16 bits. +**Block start** (`BSTART.*`): a `BSTART.*` both terminates the current block and begins the next block. It encodes a scalar (`.STD`, `.SYS`, `.FP`), parallel (`.MPAR`, `.MSEQ`, `.VPAR`, `.VSEQ`), named TMA/CUBE, or `.TEPL` target together with the transition kind (`FALL`, `DIRECT`, `COND`, `CALL`, `IND`, `ICALL`, `RET`). Generic executable `.TMA`/`.CUBE` and retired `.FIXP` spellings are not part of 0.57.1. A bare `CALL` transition records only its branch target and preserves `ra`; a returning call is preceded immediately by `SETRET` or `C.SETRET` carrying an explicit return label. Compressed `C.BSTART.*` forms encode the most common transitions in 16 bits. **Block stop** (`BSTOP` / `C.BSTOP`): terminates the current block and commits the block state in `BARG`. For decoupled blocks, this is the point where the PE receives and begins executing the command. Note: `C.BSTOP` is encoded as all-zeros in the 16-bit space; it also serves as an invalid/reserved encoding in some tooling conventions. diff --git a/docs/architecture/isa-manual/src/chapters/17_cmd.adoc b/docs/architecture/isa-manual/src/chapters/17_cmd.adoc index 2e7bba21..11d5671e 100644 --- a/docs/architecture/isa-manual/src/chapters/17_cmd.adoc +++ b/docs/architecture/isa-manual/src/chapters/17_cmd.adoc @@ -4,19 +4,18 @@ [[chapter_cmd]] == CMD - Command and Control -The Command (CMD) group covers the block-split instruction forms (typed `BSTART.*`, `BSTOP`), template blocks (`FENTRY`, `FEXIT`, `FRET.*`), memory-block operations (`MCOPY`, `MSET`), cross-block calls (`XB`), and the header-descriptor instructions (`B.IOT`, `B.IOR`, `B.ARG`, `B.DIM`, `B.TEXT`, `B.HINT`, `B.CATR`, `B.DATR`) that carry per-block metadata for accelerator execution. +The Command (CMD) group covers the block-split instruction forms (typed `BSTART.*`, `BSTOP`), template blocks (`FENTRY`, `FEXIT`, `FRET.*`), memory-block operations (`MCOPY`, `MSET`), cross-block calls (`XB`), and the header-descriptor instructions (`B.IOT`, `B.IOR`, `B.DIM`, `B.TEXT`, `B.HINT`, `B.CATR`, `B.DATR`) that carry per-block metadata for accelerator execution. **Block split instructions** (`BSTART.*`, `BSTOP`): these are the canonical forms for block-structured control flow. The typed `BSTART.` forms select the execution model: * `.STD` / `.SYS` / `.FP` -- scalar execution. * `.MPAR` / `.MSEQ` -- SIMT parallel/sequential shader kernel launch. * `.VPAR` / `.VSEQ` -- tile-parallel/sequential vector execution (TVEC-equivalent). -* `.TMA` (with aliases `TLOAD`, `TSTORE`, `TMOV`) -- tile memory access. -* `.CUBE` (with aliases `TMATMUL`, `TMATMUL.ACC`, `ACCCVT`) -- tile matrix multiply. -* `.TEPL` -- generic template-op accelerator. -* `.FIXP` -- fixed-point block type. +* TMA-family typed starts such as `TLOAD`, `TSTORE`, and `TMOV` -- tile memory access. +* CUBE-family typed starts such as `TMATMUL`, `TMATMUL.ACC`, and `ACCCVT` -- tile matrix operations. +* `BSTART.TEPL` with Mode/Function selection -- template operations such as `TADD`. -Block-start aliases are canonical spelling in documentation and tests; the encoded contract is always the base selector (`BSTART.TMA`, `BSTART.CUBE`, etc.) with the function/code field carrying the operation. +Typed block starts are the only public spellings for TMA and CUBE operations. TEPL uses the public `BSTART.TEPL` raw form with Mode/Function fields; unassigned selectors are illegal instructions. **Header descriptors**: tile and scalar block metadata is conveyed by descriptor instructions that must appear immediately after a block-start marker. Descriptors are consumed in program order and do not affect the scalar execution path unless the platform profile specifies otherwise. @@ -31,8 +30,6 @@ include::../generated/instructions/bstart_mseq.adoc[] include::../generated/instructions/bstart_mpar.adoc[] include::../generated/instructions/bstart_vseq.adoc[] include::../generated/instructions/bstart_vpar.adoc[] -include::../generated/instructions/bstart_cube.adoc[] -include::../generated/instructions/bstart_fixp.adoc[] include::../generated/instructions/bstart_acccvt.adoc[] include::../generated/instructions/bstart_tepl.adoc[] include::../generated/instructions/bstart_tload.adoc[] @@ -77,7 +74,6 @@ include::../generated/instructions/xb.adoc[] include::../generated/instructions/b_iot.adoc[] include::../generated/instructions/b_ior.adoc[] -include::../generated/instructions/b_arg.adoc[] include::../generated/instructions/b_catr.adoc[] include::../generated/instructions/b_datr.adoc[] include::../generated/instructions/b_hint.adoc[] diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_374ec956affe.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_374ec956affe.svg deleted file mode 100644 index ac89ba0d..00000000 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_374ec956affe.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - B.ARG - 31 - 28 - 24 - 20 - 16 - 12 - 8 - 4 - 0 - - - - 0x1F - - 010 - - - 010 - - 001 - - 1 - 32-bit encoding - \ No newline at end of file diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_47e8ac50ac96.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_47e8ac50ac96.svg deleted file mode 100644 index 5eb73b40..00000000 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_47e8ac50ac96.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - B.ARG - 31 - 28 - 24 - 20 - 16 - 12 - 8 - 4 - 0 - - - - 011 - - format - - 100 - - 001 - - 1 - 32-bit encoding - \ No newline at end of file diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_5c8bfa662370.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_5c8bfa662370.svg deleted file mode 100644 index e8b6fb9a..00000000 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_5c8bfa662370.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - B.ARG - 31 - 28 - 24 - 20 - 16 - 12 - 8 - 4 - 0 - - - 0x020 - - 0x1F - - 010 - - 0x1C - - 010 - - 001 - - 1 - 32-bit encoding - \ No newline at end of file diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_95152c29a268.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_95152c29a268.svg deleted file mode 100644 index 4f2fbe36..00000000 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_95152c29a268.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - B.ARG - 31 - 28 - 24 - 20 - 16 - 12 - 8 - 4 - 0 - - - 0x180 - - 0x04 - - 010 - - 0x03 - - 010 - - 001 - - 1 - 32-bit encoding - \ No newline at end of file diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_c6d5c49a4ad7.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_c6d5c49a4ad7.svg deleted file mode 100644 index a9c2ccdd..00000000 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_c6d5c49a4ad7.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - B.ARG - 31 - 28 - 24 - 20 - 16 - 12 - 8 - 4 - 0 - - - 0x180 - - 0x04 - - 010 - - 0x08 - - 010 - - 001 - - 1 - 32-bit encoding - \ No newline at end of file diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_f19d18f2126b.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_f19d18f2126b.svg deleted file mode 100644 index 6271b1b7..00000000 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_arg_32_f19d18f2126b.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - B.ARG - 31 - 28 - 24 - 20 - 16 - 12 - 8 - 4 - 0 - - - 0x180 - - 0x01 - - 010 - - 0x09 - - 010 - - 001 - - 1 - 32-bit encoding - \ No newline at end of file diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_catr.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_catr.svg index 8ea8278e..03fc27a8 100644 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_catr.svg +++ b/docs/architecture/isa-manual/src/generated/encodings/enc_b_catr.svg @@ -15,19 +15,20 @@ 4 0 - - trap - - atom - - aq - - rl - - far + DR - + + + trap + + far + + atom + + aq + + rl diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_datr.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_datr.svg index a0cb12e6..5f39ea0a 100644 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_datr.svg +++ b/docs/architecture/isa-manual/src/generated/encodings/enc_b_datr.svg @@ -15,20 +15,23 @@ 4 0 - - Sat - - RMode - - CMode + + CMode + + PadValue + + Sat + + Can… DataType - - PadValue + + + RMode 001 - DataLayo + Layout 010 diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_0f23e46d6176.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_0f23e46d6176.svg new file mode 100644 index 00000000..e85da238 --- /dev/null +++ b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_0f23e46d6176.svg @@ -0,0 +1,39 @@ + + + + + B.IOT + 31 + 28 + 24 + 20 + 16 + 12 + 8 + 4 + 0 + + + + SrcTile0 + + L + + imm4 + + 101 + + + S0R + + DstTile + + 001 + + 001 + + 1 + 32-bit encoding + \ No newline at end of file diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_2c07e7177fad.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_2c07e7177fad.svg deleted file mode 100644 index 5ee4a678..00000000 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_2c07e7177fad.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - B.IOT - 31 - 28 - 24 - 20 - 16 - 12 - 8 - 4 - 0 - - - S1R - - S0R - - L - - - 111 - - SrcTile1 - - Src… - - 100 - - SrcTile0 - - 001 - - 001 - - 1 - 32-bit encoding - \ No newline at end of file diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_10db6db84f5d.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_3a6945dec034.svg similarity index 66% rename from docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_10db6db84f5d.svg rename to docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_3a6945dec034.svg index cefdd51b..1fcd8b91 100644 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_10db6db84f5d.svg +++ b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_3a6945dec034.svg @@ -15,22 +15,22 @@ 4 0 - - - S0R - - L - - imm4 - - DstTile - - - Src… + + SrcTile1 + + SrcTile0 + + L + + imm4 - 101 - - SrcTile0 + 100 + + S1R + + S0R + + DstTile 001 diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_778f84340400.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_778f84340400.svg new file mode 100644 index 00000000..77c36471 --- /dev/null +++ b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_778f84340400.svg @@ -0,0 +1,37 @@ + + + + + B.IOT + 31 + 28 + 24 + 20 + 16 + 12 + 8 + 4 + 0 + + + + SrcTile0 + + L + + + 101 + + + S0R + + + 001 + + 001 + + 1 + 32-bit encoding + \ No newline at end of file diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_8b8bce6bffe8.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_8b8bce6bffe8.svg deleted file mode 100644 index 80922384..00000000 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_8b8bce6bffe8.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - B.IOT - 31 - 28 - 24 - 20 - 16 - 12 - 8 - 4 - 0 - - - S1R - - S0R - - L - - imm4 - - DstTile - - SrcTile1 - - Src… - - 100 - - SrcTile0 - - 001 - - 001 - - 1 - 32-bit encoding - \ No newline at end of file diff --git a/docs/isa/wavedrom/enc_b_iot_32_efa0fe3fe49a.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_a06b9b6c1965.svg similarity index 72% rename from docs/isa/wavedrom/enc_b_iot_32_efa0fe3fe49a.svg rename to docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_a06b9b6c1965.svg index e25dd25b..5e439151 100644 --- a/docs/isa/wavedrom/enc_b_iot_32_efa0fe3fe49a.svg +++ b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_a06b9b6c1965.svg @@ -15,19 +15,16 @@ 4 0 - - - - L - - imm4 - - DstTile - - + + + L + + imm4 110 - + + + DstTile 001 diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_c11eb189dd83.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_f1ca66bbcce1.svg similarity index 68% rename from docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_c11eb189dd83.svg rename to docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_f1ca66bbcce1.svg index dd43d79b..2e9e2967 100644 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_c11eb189dd83.svg +++ b/docs/architecture/isa-manual/src/generated/encodings/enc_b_iot_32_f1ca66bbcce1.svg @@ -15,21 +15,20 @@ 4 0 - - - S0R - - L - - - 111 - - - Src… + + SrcTile1 + + SrcTile0 + + L + - 101 - - SrcTile0 + 100 + + S1R + + S0R + 001 diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_bstart_cube.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_bstart_cube.svg deleted file mode 100644 index 839d499a..00000000 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_bstart_cube.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - BSTART.CUBE - 31 - 28 - 24 - 20 - 16 - 12 - 8 - 4 - 0 - - - DataType - - - Function - - 0x06 - - 001 - - 0x03 - - - - 1 - 32-bit encoding - \ No newline at end of file diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_bstart_fixp.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_bstart_fixp.svg deleted file mode 100644 index 865a48e9..00000000 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_bstart_fixp.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - BSTART.FIXP - 31 - 28 - 24 - 20 - 16 - 12 - 8 - 4 - 0 - - - DataType - - - Function - - 0x07 - - 001 - - 0x03 - - - - 1 - 32-bit encoding - \ No newline at end of file diff --git a/docs/architecture/isa-manual/src/generated/encodings/enc_bstart_tepl.svg b/docs/architecture/isa-manual/src/generated/encodings/enc_bstart_tepl.svg index c04f1ab1..7b89db94 100644 --- a/docs/architecture/isa-manual/src/generated/encodings/enc_bstart_tepl.svg +++ b/docs/architecture/isa-manual/src/generated/encodings/enc_bstart_tepl.svg @@ -18,9 +18,11 @@ DataType - 01 - - TileOpco + Mode + + Function + + 0x03 001 diff --git a/docs/architecture/isa-manual/src/generated/instruction_details.adoc b/docs/architecture/isa-manual/src/generated/instruction_details.adoc index 04ec13a5..931f7876 100644 --- a/docs/architecture/isa-manual/src/generated/instruction_details.adoc +++ b/docs/architecture/isa-manual/src/generated/instruction_details.adoc @@ -3,7 +3,7 @@ [[insnref-details]] === Instruction descriptions (by mnemonic) -This section provides per-mnemonic descriptions. The tables above remain the authoritative listing of encodable forms and decode layouts in the v0.57.0 catalog. Descriptions and pseudocode here are derived from mnemonic naming conventions plus catalog assembly templates/notes and are intended to be *informative*. +This section provides per-mnemonic descriptions. The tables above remain the authoritative listing of encodable forms and decode layouts in the v0.57.1 catalog. Descriptions and pseudocode here are derived from mnemonic naming conventions plus catalog assembly templates/notes and are intended to be *informative*. [[insndesc-execution-control]] ==== Execution Control @@ -1480,83 +1480,42 @@ off = (ZeroExtend(imm20) << 1) ra = base + off ---- -[[insndesc-block-argument]] -==== Block Argument +[[insndesc-block-control-attribute]] +==== Block Control Attribute -[[insndesc-block-argument-b-arg]] -===== B.ARG +[[insndesc-block-control-attribute-b-catr]] +===== B.CATR Block metadata instruction (sub-operation selected by the mnemonic suffix). -Catalog forms:: 6 form(s) (32 bits). +Catalog forms:: 1 form(s) (32 bits). Assembly forms:: + -* `B.ARG NORM.normal` -* `B.ARG format` -* `B.ARG NZ2DN.canon` -* `B.ARG ND2ZN.normal, FP16, Null` -* `B.ARG DN2ZN.normal, FP16, Null` -* `B.ARG DN2NZ.normal, FP32, Null` +* `B.CATR {trap, atomic, , far, dr}` Encoding:: + -.`b_arg_32_374ec956affe` — `B.ARG NORM.normal` -image::encodings/enc_b_arg_32_374ec956affe.svg[B.ARG encoding form b_arg_32_374ec956affe,align="center"] -.`b_arg_32_47e8ac50ac96` — `B.ARG format` -image::encodings/enc_b_arg_32_47e8ac50ac96.svg[B.ARG encoding form b_arg_32_47e8ac50ac96,align="center"] -.`b_arg_32_5c8bfa662370` — `B.ARG NZ2DN.canon` -image::encodings/enc_b_arg_32_5c8bfa662370.svg[B.ARG encoding form b_arg_32_5c8bfa662370,align="center"] -.`b_arg_32_95152c29a268` — `B.ARG ND2ZN.normal, FP16, Null` -image::encodings/enc_b_arg_32_95152c29a268.svg[B.ARG encoding form b_arg_32_95152c29a268,align="center"] -.`b_arg_32_c6d5c49a4ad7` — `B.ARG DN2ZN.normal, FP16, Null` -image::encodings/enc_b_arg_32_c6d5c49a4ad7.svg[B.ARG encoding form b_arg_32_c6d5c49a4ad7,align="center"] -.`b_arg_32_f19d18f2126b` — `B.ARG DN2NZ.normal, FP32, Null` -image::encodings/enc_b_arg_32_f19d18f2126b.svg[B.ARG encoding form b_arg_32_f19d18f2126b,align="center"] - - -Operation (informative):: -+ -[source] ----- -UpdateBlockMetadata(/* fields as encoded */) ----- - -[[insndesc-block-argument-b-dim]] -===== B.DIM +.`b_catr_32_8f94bdb16d29` — `B.CATR {trap, atomic, , far, dr}` +image::encodings/enc_b_catr.svg[B.CATR encoding form b_catr_32_8f94bdb16d29,align="center"] -Sets a block loop bound/dimension register for structured execution. - -Catalog forms:: 3 form(s) (32 bits). -Assembly forms:: -+ -* `B.DIM RegSrc, uimm, ->LB2` -* `B.DIM RegSrc, uimm, ->LB0` -* `B.DIM RegSrc, uimm, ->LB1` - -Encoding:: +Encoding notes (informative):: + -.`b_dim_32_1caa1aa2944a` — `B.DIM RegSrc, uimm, ->LB2` -image::encodings/enc_b_dim_32_1caa1aa2944a.svg[B.DIM encoding form b_dim_32_1caa1aa2944a,align="center"] -.`b_dim_32_27602ab68929` — `B.DIM RegSrc, uimm, ->LB0` -image::encodings/enc_b_dim_32_27602ab68929.svg[B.DIM encoding form b_dim_32_27602ab68929,align="center"] -.`b_dim_32_4191099a5f4d` — `B.DIM RegSrc, uimm, ->LB1` -image::encodings/enc_b_dim_32_4191099a5f4d.svg[B.DIM encoding form b_dim_32_4191099a5f4d,align="center"] - +* PTO ISA 0.57.1 control attributes. Only DR[26], trap[19], far[18], atom[17], aq[16], and rl[15] are variable. Operation (informative):: + [source] ---- -LBx = Read(RegSrc) + uimm // x selected by encoding (LB0/LB1/LB2) +UpdateBlockMetadata(/* fields as encoded */) ---- -[[insndesc-block-control-attribute]] -==== Block Control Attribute +[[insndesc-block-data-attribute]] +==== Block Data Attribute -[[insndesc-block-control-attribute-b-catr]] -===== B.CATR +[[insndesc-block-data-attribute-b-datr]] +===== B.DATR Block metadata instruction (sub-operation selected by the mnemonic suffix). @@ -1564,17 +1523,17 @@ Catalog forms:: 1 form(s) (32 bits). Assembly forms:: + -* `B.CATR {trap, atomic, , far, dr}` +* `B.DATR {layout, datatype, padvalue_or_byteid, cmode, rmode, sat, canonicalize}` Encoding:: + -.`b_catr_32_e90bd52fa480` — `B.CATR {trap, atomic, , far, dr}` -image::encodings/enc_b_catr.svg[B.CATR encoding form b_catr_32_e90bd52fa480,align="center"] +.`b_datr_32_840f4b8d579d` — `B.DATR {layout, datatype, padvalue_or_byteid, cmode, rmode, sat, canonicalize}` +image::encodings/enc_b_datr.svg[B.DATR encoding form b_datr_32_840f4b8d579d,align="center"] Encoding notes (informative):: + -* canonical split of legacy B.CATR/B.DATR control fields. Bits 25:15 are reserved zero. +* PTO ISA 0.57.1 data attributes. PadValueOrByteId is an opcode-defined two-bit union; bits 19:18 are reserved zero. Operation (informative):: + @@ -1583,35 +1542,37 @@ Operation (informative):: UpdateBlockMetadata(/* fields as encoded */) ---- -[[insndesc-block-data-attribute]] -==== Block Data Attribute +[[insndesc-block-argument]] +==== Block Argument -[[insndesc-block-data-attribute-b-datr]] -===== B.DATR +[[insndesc-block-argument-b-dim]] +===== B.DIM -Block metadata instruction (sub-operation selected by the mnemonic suffix). +Sets a block loop bound/dimension register for structured execution. -Catalog forms:: 1 form(s) (32 bits). +Catalog forms:: 3 form(s) (32 bits). Assembly forms:: + -* `B.DATR {layout.{canon, normal}, datatype, padvalue, cmode, rmode, sat}` +* `B.DIM RegSrc, uimm, ->LB2` +* `B.DIM RegSrc, uimm, ->LB0` +* `B.DIM RegSrc, uimm, ->LB1` Encoding:: + -.`b_datr_32_c161a042ff38` — `B.DATR {layout.{canon, normal}, datatype, padvalue, cmode, rmode, sat}` -image::encodings/enc_b_datr.svg[B.DATR encoding form b_datr_32_c161a042ff38,align="center"] - +.`b_dim_32_1caa1aa2944a` — `B.DIM RegSrc, uimm, ->LB2` +image::encodings/enc_b_dim_32_1caa1aa2944a.svg[B.DIM encoding form b_dim_32_1caa1aa2944a,align="center"] +.`b_dim_32_27602ab68929` — `B.DIM RegSrc, uimm, ->LB0` +image::encodings/enc_b_dim_32_27602ab68929.svg[B.DIM encoding form b_dim_32_27602ab68929,align="center"] +.`b_dim_32_4191099a5f4d` — `B.DIM RegSrc, uimm, ->LB1` +image::encodings/enc_b_dim_32_4191099a5f4d.svg[B.DIM encoding form b_dim_32_4191099a5f4d,align="center"] -Encoding notes (informative):: -+ -* canonical split of legacy B.CATR/B.DATR data fields. CMode is 3 bits; RMode is 3 bits; Sat is bit 31. Operation (informative):: + [source] ---- -UpdateBlockMetadata(/* fields as encoded */) +LBx = Read(RegSrc) + uimm // x selected by encoding (LB0/LB1/LB2) ---- [[insndesc-branch]] @@ -1936,32 +1897,32 @@ Catalog forms:: 5 form(s) (32 bits). Assembly forms:: + * `B.IOT SrcTile0<.reuse>, , ->DstTile` -* `B.IOT SrcTile0<.reuse>, SrcTile1<.reuse>, ` * `B.IOT SrcTile0<.reuse>, SrcTile1<.reuse>, , ->DstTile` * `B.IOT SrcTile0<.reuse>, ` * `B.IOT , ->DstTile` +* `B.IOT SrcTile0<.reuse>, SrcTile1<.reuse>, ` Encoding:: + -.`b_iot_32_10db6db84f5d` — `B.IOT SrcTile0<.reuse>, , ->DstTile` -image::encodings/enc_b_iot_32_10db6db84f5d.svg[B.IOT encoding form b_iot_32_10db6db84f5d,align="center"] -.`b_iot_32_2c07e7177fad` — `B.IOT SrcTile0<.reuse>, SrcTile1<.reuse>, ` -image::encodings/enc_b_iot_32_2c07e7177fad.svg[B.IOT encoding form b_iot_32_2c07e7177fad,align="center"] -.`b_iot_32_8b8bce6bffe8` — `B.IOT SrcTile0<.reuse>, SrcTile1<.reuse>, , ->DstTile` -image::encodings/enc_b_iot_32_8b8bce6bffe8.svg[B.IOT encoding form b_iot_32_8b8bce6bffe8,align="center"] -.`b_iot_32_c11eb189dd83` — `B.IOT SrcTile0<.reuse>, ` -image::encodings/enc_b_iot_32_c11eb189dd83.svg[B.IOT encoding form b_iot_32_c11eb189dd83,align="center"] -.`b_iot_32_efa0fe3fe49a` — `B.IOT , ->DstTile` -image::encodings/enc_b_iot_32_efa0fe3fe49a.svg[B.IOT encoding form b_iot_32_efa0fe3fe49a,align="center"] +.`b_iot_32_0f23e46d6176` — `B.IOT SrcTile0<.reuse>, , ->DstTile` +image::encodings/enc_b_iot_32_0f23e46d6176.svg[B.IOT encoding form b_iot_32_0f23e46d6176,align="center"] +.`b_iot_32_3a6945dec034` — `B.IOT SrcTile0<.reuse>, SrcTile1<.reuse>, , ->DstTile` +image::encodings/enc_b_iot_32_3a6945dec034.svg[B.IOT encoding form b_iot_32_3a6945dec034,align="center"] +.`b_iot_32_778f84340400` — `B.IOT SrcTile0<.reuse>, ` +image::encodings/enc_b_iot_32_778f84340400.svg[B.IOT encoding form b_iot_32_778f84340400,align="center"] +.`b_iot_32_a06b9b6c1965` — `B.IOT , ->DstTile` +image::encodings/enc_b_iot_32_a06b9b6c1965.svg[B.IOT encoding form b_iot_32_a06b9b6c1965,align="center"] +.`b_iot_32_f1ca66bbcce1` — `B.IOT SrcTile0<.reuse>, SrcTile1<.reuse>, ` +image::encodings/enc_b_iot_32_f1ca66bbcce1.svg[B.IOT encoding form b_iot_32_f1ca66bbcce1,align="center"] Encoding notes (informative):: + -* canonical one-input immediate-size tile descriptor; function=101 means only SrcTile0 is valid. v0.57 excludes DstTile=111 from this destination-producing form. -* v0.57 two-input source-only tile descriptor required by multi-descriptor PTO expansions. DstTile=111 denotes no output and the unused size field is canonically zero. -* canonical two-input immediate-size tile descriptor. SrcTile0/1 are independent 6-bit fields; imm4 encodes 0B..512KB. v0.57 excludes DstTile=111 from this destination-producing form. -* v0.57 one-input source-only tile descriptor required by multi-descriptor PTO expansions. DstTile=111 denotes no output and the unused size field is canonically zero. -* canonical no-input immediate-size tile descriptor; function=110 means only the destination allocation is valid. +* PTO ISA 0.57.1 one-source descriptor. Inactive source and reuse fields encode zero. +* PTO ISA 0.57.1 two-source descriptor. imm4 3..9 selects 128B..8KiB; ACC is never encoded as DstTile. +* PTO ISA 0.57.1 one-source destination-free descriptor. All inapplicable fields encode zero. +* PTO ISA 0.57.1 zero-source destination descriptor. Inactive source and reuse fields encode zero. +* PTO ISA 0.57.1 two-source destination-free descriptor. DstTile and imm4 encode zero; zero does not name an output. Operation (informative):: + @@ -2629,61 +2590,7 @@ image::encodings/enc_bstart_acccvt.svg[BSTART.ACCCVT encoding form bstart_acccvt Encoding notes (informative):: + -* Alias of BSTART.CUBE Function=8. ACCCVT requires quantization args via B.ARG+B.IOR (scale/zero-point required in strict profile). - -Operation (informative):: -+ -[source] ----- -EndBlock() -BeginNextBlock(/* type/kind/target as encoded */) ----- - -[[insndesc-block-split-bstart-cube]] -===== BSTART.CUBE - -Terminates the current block and begins the next block, encoding both block type and transition kind. - -Catalog forms:: 1 form(s) (32 bits). - -Assembly forms:: -+ -* `BSTART.CUBE Function, DataType` - -Encoding:: -+ -.`bstart_cube_32_bd3f337acb9d` — `BSTART.CUBE Function, DataType` -image::encodings/enc_bstart_cube.svg[BSTART.CUBE encoding form bstart_cube_32_bd3f337acb9d,align="center"] - - -Encoding notes (informative):: -+ -* Generic CUBE selector form for unnamed functions. Functions 0/1/2/4/5/6/8/16/17/18/20/21/22 decode through their canonical named forms. - -Operation (informative):: -+ -[source] ----- -EndBlock() -BeginNextBlock(/* type/kind/target as encoded */) ----- - -[[insndesc-block-split-bstart-fixp]] -===== BSTART.FIXP - -Terminates the current block and begins the next block, encoding both block type and transition kind. - -Catalog forms:: 1 form(s) (32 bits). - -Assembly forms:: -+ -* `BSTART.FIXP TileOp, DataType` - -Encoding:: -+ -.`bstart_fixp_32_3b0ae11126a6` — `BSTART.FIXP TileOp, DataType` -image::encodings/enc_bstart_fixp.svg[BSTART.FIXP encoding form bstart_fixp_32_3b0ae11126a6,align="center"] - +* Named CUBE-family Function=8. ACCCVT reads implicit ACC and uses B.DATR conversion controls before publishing an ordinary Tile. Operation (informative):: + @@ -2759,7 +2666,7 @@ image::encodings/enc_bstart_mgather.svg[BSTART.MGATHER encoding form bstart_mgat Encoding notes (informative):: + -* Named TMA-family Function=4. Memory gather uses B.ARG/B.IOR/B.IOT descriptor state; detailed PTO selector manifest is defined out-of-band for v0.57. +* TMA Function=4. Memory gather uses B.DATR/B.IOR/B.IOT descriptor state. Operation (informative):: + @@ -2871,7 +2778,7 @@ image::encodings/enc_bstart_mscatter.svg[BSTART.MSCATTER encoding form bstart_ms Encoding notes (informative):: + -* Named TMA-family Function=5. Memory scatter uses B.ARG/B.IOR/B.IOT descriptor state; detailed PTO selector manifest is defined out-of-band for v0.57. +* TMA Function=5. Memory scatter uses B.DATR/B.IOR/B.IOT descriptor state. Operation (informative):: + @@ -3016,17 +2923,17 @@ Catalog forms:: 1 form(s) (32 bits). Assembly forms:: + -* `BSTART.TEPL TileOpcode, DataType` +* `BSTART.TEPL Mode, Function, DataType` Encoding:: + -.`bstart_tepl_32_d022db6dacb3` — `BSTART.TEPL TileOpcode, DataType` -image::encodings/enc_bstart_tepl.svg[BSTART.TEPL encoding form bstart_tepl_32_d022db6dacb3,align="center"] +.`bstart_tepl_32_bff5143d4fe3` — `BSTART.TEPL Mode, Function, DataType` +image::encodings/enc_bstart_tepl.svg[BSTART.TEPL encoding form bstart_tepl_32_bff5143d4fe3,align="center"] Encoding notes (informative):: + -* Tile opcode selects PTO template ops. Canonical established assignments require TileOpcode[9:6]=0 and pack TileOpcode[5]=Mode with TileOpcode[4:0]=Function; unassigned values remain reserved for future template extension. +* PTO ISA 0.57.1 TEPL selector: logical_selector=(Mode<<5)\|Function. There is no legacy 10-bit TileOpcode decode. Operation (informative):: + @@ -3229,7 +3136,7 @@ image::encodings/enc_bstart_tload.svg[BSTART.TLOAD encoding form bstart_tload_32 Encoding notes (informative):: + -* Alias of BSTART.TMA Function=0. Requires B.ARG layout/pad and B.IOR stride/base plus B.IOT tile binding. +* TMA Function=0. Uses B.DATR layout/pad and B.IOR stride/base plus B.IOT tile binding. Operation (informative):: + @@ -3258,7 +3165,7 @@ image::encodings/enc_bstart_tmatmul.svg[BSTART.TMATMUL encoding form bstart_tmat Encoding notes (informative):: + -* Alias of BSTART.CUBE Function=0. Requires B.DIM (LB0/LB1/LB2 as m,n,k) and tile bindings via B.IOT. +* Named CUBE-family Function=0. Requires B.DIM (LB0/LB1/LB2 as m,n,k) and tile bindings via B.IOT. Operation (informative):: + @@ -3287,7 +3194,7 @@ image::encodings/enc_bstart_tmatmul_acc.svg[BSTART.TMATMUL.ACC encoding form bst Encoding notes (informative):: + -* Alias of BSTART.CUBE Function=2. Requires B.DIM (LB0/LB1/LB2 as m,n,k) and tile bindings via B.IOT. +* Named CUBE-family Function=2. Requires B.DIM (LB0/LB1/LB2 as m,n,k) and tile bindings via B.IOT. Operation (informative):: + @@ -3490,7 +3397,7 @@ image::encodings/enc_bstart_tstore.svg[BSTART.TSTORE encoding form bstart_tstore Encoding notes (informative):: + -* Alias of BSTART.TMA Function=1. Requires B.ARG layout/pad and B.IOR stride/base plus B.IOT tile binding. +* TMA Function=1. Uses B.DATR layout/pad and B.IOR stride/base plus B.IOT tile binding. Operation (informative):: + diff --git a/docs/architecture/isa-manual/src/generated/instruction_group_summary.adoc b/docs/architecture/isa-manual/src/generated/instruction_group_summary.adoc index fa6e0b67..ad155303 100644 --- a/docs/architecture/isa-manual/src/generated/instruction_group_summary.adoc +++ b/docs/architecture/isa-manual/src/generated/instruction_group_summary.adoc @@ -10,16 +10,16 @@ |Arithmetic Operation 64bit |21 |21 |Arithmetic Operation 32bit |21 |21 |PC-Relative |4 |4 -|Block Argument |9 |2 |Block Control Attribute |1 |1 |Block Data Attribute |1 |1 +|Block Argument |3 |1 |Branch |10 |10 |Block Hint |2 |1 |Block Input & Output |6 |2 |Block Offset |1 |1 |Cache Maintain |16 |16 |Bit Operation |8 |8 -|Block Split |59 |45 +|Block Split |57 |43 |BSTART |20 |8 |Arithmetic Operation |20 |20 |Arithmetic |1 |1 diff --git a/docs/architecture/isa-manual/src/generated/instruction_reference.adoc b/docs/architecture/isa-manual/src/generated/instruction_reference.adoc index e0e3eb67..2633e858 100644 --- a/docs/architecture/isa-manual/src/generated/instruction_reference.adoc +++ b/docs/architecture/isa-manual/src/generated/instruction_reference.adoc @@ -88,39 +88,33 @@ |`SETRET` |32 |- |`setret uimm, ->Ra` |- |=== -[[insnref-block-argument]] -=== Block Argument +[[insnref-block-control-attribute]] +=== Block Control Attribute [cols="1,1,2,4,6",options="header"] |=== |Mnemonic |Len |Decode |Assembly |Notes -|`B.ARG` |32 |- |`B.ARG NORM.normal` |- -|`B.ARG` |32 |- |`B.ARG format` |- -|`B.ARG` |32 |- |`B.ARG NZ2DN.canon` |- -|`B.ARG` |32 |- |`B.ARG ND2ZN.normal, FP16, Null` |- -|`B.ARG` |32 |- |`B.ARG DN2ZN.normal, FP16, Null` |- -|`B.ARG` |32 |- |`B.ARG DN2NZ.normal, FP32, Null` |- -|`B.DIM` |32 |- |`B.DIM RegSrc, uimm, ->LB2` |- -|`B.DIM` |32 |- |`B.DIM RegSrc, uimm, ->LB0` |- -|`B.DIM` |32 |- |`B.DIM RegSrc, uimm, ->LB1` |- +|`B.CATR` |32 |- |`B.CATR {trap, atomic, , far, dr}` |PTO ISA 0.57.1 control attributes. Only DR[26], trap[19], far[18], atom[17], aq[16], and rl[15] are variable. |=== -[[insnref-block-control-attribute]] -=== Block Control Attribute +[[insnref-block-data-attribute]] +=== Block Data Attribute [cols="1,1,2,4,6",options="header"] |=== |Mnemonic |Len |Decode |Assembly |Notes -|`B.CATR` |32 |- |`B.CATR {trap, atomic, , far, dr}` |canonical split of legacy B.CATR/B.DATR control fields. Bits 25:15 are reserved zero. +|`B.DATR` |32 |- |`B.DATR {layout, datatype, padvalue_or_byteid, cmode, rmode, sat, canonicalize}` |PTO ISA 0.57.1 data attributes. PadValueOrByteId is an opcode-defined two-bit union; bits 19:18 are reserved zero. |=== -[[insnref-block-data-attribute]] -=== Block Data Attribute +[[insnref-block-argument]] +=== Block Argument [cols="1,1,2,4,6",options="header"] |=== |Mnemonic |Len |Decode |Assembly |Notes -|`B.DATR` |32 |- |`B.DATR {layout.{canon, normal}, datatype, padvalue, cmode, rmode, sat}` |canonical split of legacy B.CATR/B.DATR data fields. CMode is 3 bits; RMode is 3 bits; Sat is bit 31. +|`B.DIM` |32 |- |`B.DIM RegSrc, uimm, ->LB2` |- +|`B.DIM` |32 |- |`B.DIM RegSrc, uimm, ->LB0` |- +|`B.DIM` |32 |- |`B.DIM RegSrc, uimm, ->LB1` |- |=== [[insnref-branch]] @@ -158,11 +152,11 @@ |=== |Mnemonic |Len |Decode |Assembly |Notes |`B.IOR` |32 |- |`B.IOR [RegSrc0, RegSrc1, RegSrc2],[RegDst]` |- -|`B.IOT` |32 |- |`B.IOT SrcTile0<.reuse>, , ->DstTile` |canonical one-input immediate-size tile descriptor; function=101 means only SrcTile0 is valid. v0.57 excludes DstTile=111 from this destination-producing form. -|`B.IOT` |32 |- |`B.IOT SrcTile0<.reuse>, SrcTile1<.reuse>, ` |v0.57 two-input source-only tile descriptor required by multi-descriptor PTO expansions. DstTile=111 denotes no output and the unused size field is canonically zero. -|`B.IOT` |32 |- |`B.IOT SrcTile0<.reuse>, SrcTile1<.reuse>, , ->DstTile` |canonical two-input immediate-size tile descriptor. SrcTile0/1 are independent 6-bit fields; imm4 encodes 0B..512KB. v0.57 excludes DstTile=111 from this destination-producing form. -|`B.IOT` |32 |- |`B.IOT SrcTile0<.reuse>, ` |v0.57 one-input source-only tile descriptor required by multi-descriptor PTO expansions. DstTile=111 denotes no output and the unused size field is canonically zero. -|`B.IOT` |32 |- |`B.IOT , ->DstTile` |canonical no-input immediate-size tile descriptor; function=110 means only the destination allocation is valid. +|`B.IOT` |32 |- |`B.IOT SrcTile0<.reuse>, , ->DstTile` |PTO ISA 0.57.1 one-source descriptor. Inactive source and reuse fields encode zero. +|`B.IOT` |32 |- |`B.IOT SrcTile0<.reuse>, SrcTile1<.reuse>, , ->DstTile` |PTO ISA 0.57.1 two-source descriptor. imm4 3..9 selects 128B..8KiB; ACC is never encoded as DstTile. +|`B.IOT` |32 |- |`B.IOT SrcTile0<.reuse>, ` |PTO ISA 0.57.1 one-source destination-free descriptor. All inapplicable fields encode zero. +|`B.IOT` |32 |- |`B.IOT , ->DstTile` |PTO ISA 0.57.1 zero-source destination descriptor. Inactive source and reuse fields encode zero. +|`B.IOT` |32 |- |`B.IOT SrcTile0<.reuse>, SrcTile1<.reuse>, ` |PTO ISA 0.57.1 two-source destination-free descriptor. DstTile and imm4 encode zero; zero does not name an output. |=== [[insnref-block-offset]] @@ -222,9 +216,7 @@ |Mnemonic |Len |Decode |Assembly |Notes |`BSTART` |32 |- |`BSTART {DIRECT, CALL},