File size: 2,858 Bytes
9425aed | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | // ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// SOV_CONTROL.CMM β Sovereign APL State Machine
// C-- control flow for multi-step density matrix evolution
// Compiled: c-- -> LLVM IR -> MLIR -> Machine Code
// No prologue/epilogue overhead. Hand-tuned register layout.
// ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
section "text" {
// sov_apl_evolve_cmm
// Args (System V AMD64 ABI):
// R0 = H_ptr (complex(dp) column-major, n x n)
// R1 = rho_ptr (complex(dp) column-major, n x n, in/out)
// R2 = n (int64)
// R3 = steps (int64)
// R4 = dt (float64, via xmm0 on x86_64)
// R5 = sk_ptr (Ed25519 secret key, 32 bytes)
// R6 = pk_ptr (Ed25519 public key, 32 bytes)
// R7 = receipts_ptr (uint8_t[steps * 96])
// Returns: rax = 0 (ok) | error code
export sov_apl_evolve_cmm;
sov_apl_evolve_cmm
( bits64 H_ptr, bits64 rho_ptr, bits64 n, bits64 steps,
bits64 dt, bits64 sk_ptr, bits64 pk_ptr, bits64 receipts_ptr )
{
bits64 step, receipt_off, hash_ptr, sig_ptr;
bits64 RECEIPT_SZ = 96; // HASH_LEN(32) + SIG_LEN(64)
// Step counter
step = 0;
L_check:
if step >= steps goto L_done;
// Compute receipt buffer offset for this step
receipt_off = step * RECEIPT_SZ;
hash_ptr = receipts_ptr + receipt_off;
sig_ptr = receipts_ptr + receipt_off + 32;
// Call Fortran kernel: sov_apl_step_zgemm_fused
foreign "C" sov_apl_step_zgemm_fused
( H_ptr, n, rho_ptr, n, dt, sk_ptr, pk_ptr,
rho_ptr, hash_ptr, sig_ptr );
// Advance
step = step + 1;
goto L_check;
L_done:
return ( 0::bits64 );
// Fault path: minimal β write code, halt
L_fault:
bits64 fault_mem = 0x0000DEAD0000;
W_ [fault_mem] = step;
call "asm" { "hlt" };
}
// sov_verify_receipt
// Verifies a single receipt (hash || sig) for a given rho snapshot
// Returns 1 if valid, 0 if tampered
export sov_verify_receipt;
sov_verify_receipt
( bits64 rho_ptr, bits64 n, bits64 receipt_ptr, bits64 pk_ptr )
{
bits64 hash_ptr, sig_ptr, ok;
hash_ptr = receipt_ptr; // first 32 bytes
sig_ptr = receipt_ptr + 32; // next 64 bytes
// Call Fortran: sov_bifrost_verify
ok = foreign "C" sov_bifrost_verify
( hash_ptr, 32, sig_ptr, pk_ptr );
return ( ok );
}
} // section "text"
|