Closed vbgl closed 1 year ago
This particular example has been fixed in #341.
The difference in behavior when using general purpose registers (when values are 64-bit wide) instead of vector registers (when values are 256-bit wide) can be explained by the difference in calling conventions: with 64-bit registers, the argument x
to the export function comes in a different register than the returned value and the result of the xor must be at the same place as its first argument; a copy is necessary. With 256-bit registers however, arguments and returned values use the same register (and even if it were not the case, the wide xor instruction can put its result in any desired wide register).
The weakness of register-allocation might still be present, but without a test-case allowing to reproduce it, I suggest to close this issue.
The Jasmin compiler cannot compile the following program.
The computation of conflicts during register allocation is not precise enough.
When all
u256
are changed intou64
, the error goes away (but a warning remains): this discrepancy is suspicious.