cfallin opened PR #3847 from isle-use-implicit-conversions
to main
:
This PR makes use of the new implicit-conversion feature of the ISLE DSL
that was introduced in #3807 in order to make the lowering rules
significantly simpler and more concise.The basic idea is to eliminate the repetitive and mechanical use of
terms that convert from one type to another when there is only one real
way to do the conversion -- for example, to go from aWritableReg
to a
Reg
, the only sensible way is to usewritable_reg_to_reg
.This PR generally takes any term of the form "A_to_B" and makes it an
automatic conversion, as well as some others that are similar in spirit.The notable exception to the pure-value-convsion category is the
put_in_reg
family of operations, which actually do have side-effects.
However, as noted in the doc additions in #3807, this is fine as long as
the side-effects are idempotent. And on balance, makingput_in_reg
automatic is a significant clarity win -- together with other operand
converters, it enables rules like:;; Add two registers. (rule (lower (has_type (fits_in_64 ty) (iadd x y))) (add ty x y))
There may be other converters that we could define to make the rules
even simpler; we can make such improvements as we think of them, but
this should be a good start!<!--
Please ensure that the following steps are all taken care of before submitting
the PR.
[ ] This has been discussed in issue #..., or if not, please tell us why
here.[ ] A short description of what this does, why it is needed; if the
description becomes long, the matter should probably be discussed in an issue
first.[ ] This PR contains test cases, if meaningful.
- [ ] A reviewer from the core maintainer team has been assigned for this PR.
If you don't know who could review this, please indicate so. The list of
suggested reviewers on the right can help you.Please ensure all communication adheres to the code of conduct.
-->
cfallin requested fitzgen for a review on PR #3847.
abrown submitted PR review.
cfallin edited PR #3847 from isle-use-implicit-conversions
to main
:
This PR makes use of the new implicit-conversion feature of the ISLE DSL
that was introduced in #3807 in order to make the lowering rules
significantly simpler and more concise.The basic idea is to eliminate the repetitive and mechanical use of
terms that convert from one type to another when there is only one real
way to do the conversion -- for example, to go from aWritableReg
to a
Reg
, the only sensible way is to usewritable_reg_to_reg
.This PR generally takes any term of the form "A_to_B" and makes it an
automatic conversion, as well as some others that are similar in spirit.The notable exception to the pure-value-conversion category is the
put_in_reg
family of operations, which actually do have side-effects.
However, as noted in the doc additions in #3807, this is fine as long as
the side-effects are idempotent. And on balance, makingput_in_reg
automatic is a significant clarity win -- together with other operand
converters, it enables rules like:;; Add two registers. (rule (lower (has_type (fits_in_64 ty) (iadd x y))) (add ty x y))
There may be other converters that we could define to make the rules
even simpler; we can make such improvements as we think of them, but
this should be a good start!<!--
Please ensure that the following steps are all taken care of before submitting
the PR.
[ ] This has been discussed in issue #..., or if not, please tell us why
here.[ ] A short description of what this does, why it is needed; if the
description becomes long, the matter should probably be discussed in an issue
first.[ ] This PR contains test cases, if meaningful.
- [ ] A reviewer from the core maintainer team has been assigned for this PR.
If you don't know who could review this, please indicate so. The list of
suggested reviewers on the right can help you.Please ensure all communication adheres to the code of conduct.
-->
cfallin merged PR #3847.
Last updated: Dec 23 2024 at 12:05 UTC