afonso360 commented on issue #6933:
My guess is that if possible it'd be best to break up the macro-instruction into its components to handle this. That way instead of using macro-instructions the helpers in ISLE can be used. This may not always be applicable though.
I did look at a few of these in emit.rs though and they were related to things like sp adjustments and stack probe loops which I think could also reasonably be switched over to asserting that the constant fits in an instruction rather than requiring a pool. (so long as the range matches what one would reasonably expect for these situations)
We already sort of do this. We have
Inst::load_constant_u64that tries to pattern match either a singleaddior aaddi+luibefore falling back to theLoadInlineConstinstruction as a last resort.I'd eventually like to try and fully merge the load constant logic with some ISLE rules, but I'm not entirely sure how to do that.
afonso360 edited a comment on issue #6933:
My guess is that if possible it'd be best to break up the macro-instruction into its components to handle this. That way instead of using macro-instructions the helpers in ISLE can be used. This may not always be applicable though.
I did look at a few of these in emit.rs though and they were related to things like sp adjustments and stack probe loops which I think could also reasonably be switched over to asserting that the constant fits in an instruction rather than requiring a pool. (so long as the range matches what one would reasonably expect for these situations)
We already sort of do this. We have
Inst::load_constant_u64that tries to pattern match either a singleaddior aaddi+luibefore falling back to theLoadInlineConstinstruction as a last resort.I'd eventually like to try and fully merge the load constant logic with some ISLE rules, but I'm not entirely sure how to do that.
Right now both
Inst::load_constant_u64and ISLE call intoInst::generate_imm, but I'd like to build some more complex pattern matching in ISLE and still have it available inemit.rs
alexcrichton commented on issue #6933:
Makes sense! I was thinking that the "solution" there is to slowly whittle away at callers to
Inst::load_constant_u64as opposed to refactoring the internals of that to use ISLE (which would probably be different given the required contexts), but that's naturally much easier said than done
Last updated: Dec 06 2025 at 06:05 UTC