elliottt edited a comment on issue #5430:
@uweigand I've reworked this a bit more to avoid the changes to VCode. The problem was that there was a move using a fixed non-allocatable register produced by the s390x backend in the
casloop_emit
function. I've reworked this to useMovPReg
, which is designed to handle fixed non-allocatable sources, but this does introduce some additional indirection for the result when inlittleendian
mode.
elliottt commented on issue #5430:
Actually, reading your latest update: I think that what is actually needed here is for
MachInst::is_move()
to return a correct result with respect to real/virtual registers. Otherwise we have an inconsistency that may cause issues elsewhere (and are not addressed by papering over one callsite toMachInst::is_move
with alternative logic).The changes to
VCode
andMachInst
ended up being a red-herring: the real problem as we discussed in a DM was that there were move instructions emitted that were using fixed non-allocatable registers at all. Switching toMInst.MovPreg
instead in the s390x backend was the best fix.
elliottt commented on issue #5430:
@cfallin the assertions in
collect_operands
are failing, so I'll open a separate PR with that change and track them down there.
bjorn3 commented on issue #5430:
Will this be backported to the wasmtime-4.0.0 branch?
elliottt commented on issue #5430:
Will this be backported to the wasmtime-4.0.0 branch?
Just made the PR: #5442
Last updated: Nov 22 2024 at 16:03 UTC