Files
wasmtime/cranelift/isle/isle_examples/let.isle
2021-11-11 15:56:55 -08:00

22 lines
385 B
Common Lisp

(type u32 (primitive u32))
(type A (enum (Add (x u32) (y u32)) (Sub (x u32) (y u32))))
(type B (enum (B (z u32))))
(decl Sub (u32 u32) u32)
(extern constructor Sub sub)
(decl Add (u32 u32) u32)
(extern constructor Add add)
(decl Lower (A) B)
(rule
(Lower (A.Add x y))
(let ((z u32 (Add x y)))
(B.B z)))
(rule
(Lower (A.Sub x y))
(let ((z u32 (Sub x y)))
(B.B z)))