[Flint] normalize surface addresses and pack Gen9 message payloads
Mirror Gitea refs to GitHub / mirror (push) Successful in 21s
Test / build_and_test (push) Successful in 2m54s
Build / build (push) Successful in 4m37s

This commit is contained in:
2026-08-28 19:35:16 +02:00
parent 441d5fbb96
commit 0788470ee5
14 changed files with 503 additions and 28 deletions
@@ -76,6 +76,11 @@ fn reserveExistingPhysicalRegisters(program: *const program_ir.Program, initial:
reserveRegister(&next_byte, op.address.register, grf_size);
reserveRegister(&next_byte, op.data.register, grf_size);
},
.surface_message => |op| {
reserveRegister(&next_byte, op.payload.base, grf_size);
if (op.response) |response|
reserveRegister(&next_byte, response.base, grf_size);
},
.move => |op| {
reserveRegister(&next_byte, op.destination.register, grf_size);
reserveRegister(&next_byte, op.source.register, grf_size);
@@ -128,6 +133,11 @@ fn rewriteProgram(program: *program_ir.Program, allocations: []const ?operand.Ph
try rewriteSource(program, &op.address, allocations);
try rewriteSource(program, &op.data, allocations);
},
.surface_message => |*op| {
try rewriteRegister(program, &op.payload.base, allocations);
if (op.response) |*response|
try rewriteRegister(program, &response.base, allocations);
},
.move => |*op| {
try rewriteDestination(program, &op.destination, allocations);
try rewriteSource(program, &op.source, allocations);