Commit Graph

8 Commits

Author SHA1 Message Date
Alexa VanHattum
4bc4fae571 Small update for filename in isle_integration.md (#5516)
* Small update for filename in `isle_integration.md`

The name "clif.isle" is stale (since #4953), now two files "clif_lower.isle" and "clif_opt.isle" are generated. Not sure if that PR necessitates other changes this this doc.

* Update cranelift/docs/isle-integration.md

Co-authored-by: Jamey Sharp <jsharp@fastly.com>
2023-01-04 20:06:49 +00:00
Jamey Sharp
ff5abfd993 cranelift-isle: Minor error-handling cleanups (#5338)
- Remove remaining references to Miette
- Borrow implementation of `line_starts` from codespan-reporting
- Clean up a use of `Result` that no longer conflicts with a local
  definition
- When printing plain errors, add a blank line between errors for
  readability
2022-11-29 03:07:05 +00:00
Chris Fallin
d8ba1ddc86 Update Cranelift-ISLE integration docs to reflect no more checked-in code. (#4229)
* Update Cranelift-ISLE integration docs to reflect no more checked-in code.

In #4143, we removed the checked-in-generated-code aspect of the ISLE
build process, in order to simplify the development cycle and reduce
errors. However, I failed to update the docs at the same time. This PR
fixes that. Supersedes #4228 (thanks @jlb6740 for noticing this issue!).

* fix typo
2022-06-06 12:54:23 -07:00
Chris Fallin
9dbb8c25c5 Implicit type conversions in ISLE (#3807)
Add support for implicit type conversions to ISLE.

This feature allows the DSL user to register to the compiler that a
particular term (used as a constructor or extractor) converts from one
type to another. The compiler will then *automatically* insert this term
whenever a type mismatch involving that specific pair of types occurs.

This significantly cleans up many uses of the ISLE DSL. For example,
when defining the compiler backends, we often have newtypes like `Gpr`
around `Reg` (signifying a particular type of register); we can define
a conversion from Gpr to Reg automatically.

Conversions can also have side-effects, as long as these side-effects
are idempotent. For example, `put_value_in_reg` in a compiler backend
has the effect of marking the value as used, causing codegen to produce
it, and assigns a register to the value; but multiple invocations of
this will return the same register for the same value. Thus it is safe
to use it as an implicit conversion that may be invoked multiple times.
This is documented in the ISLE-Cranelift integration document.

This PR also adds some testing infrastructure to the ISLE compiler,
checking that "pass" tests pass through the DSL compiler, "fail" tests
do not, and "link" tests are able to generate code and link that code
with corresponding Rust code.
2022-02-23 13:15:27 -08:00
Nick Fitzgerald
98f32968f5 docs: Fix typo in ISLE and Cranelift integration docs (#3652) 2022-01-05 13:17:56 -06:00
Chris Fallin
5a765c65ea Add link to ISLE language reference to ISLE Cranelift integration doc. 2021-11-30 13:25:08 -08:00
Nick Fitzgerald
66432ab461 docs: Clarify isle integration docs 2021-11-29 17:01:55 -08:00
Nick Fitzgerald
f148b50201 Add a document describing how ISLE is integrated with Cranelift 2021-11-29 17:01:55 -08:00