Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/artem/vampir-opt-bug' into next
Browse files Browse the repository at this point in the history
  • Loading branch information
mariari committed Nov 21, 2023
2 parents 7abc935 + 44f7878 commit 8b1e421
Showing 1 changed file with 15 additions and 15 deletions.
30 changes: 15 additions & 15 deletions src/seqn/trans.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -63,31 +63,31 @@ to (n) for some n"
(let* ((zero (vamp:make-constant :const 0))
(one (vamp:make-constant :const 1))
(car (car (vamp:arguments obj)))
(cadr (cadr (vamp:arguments obj)))
(opcar (to-vampir-opt car))
(opcadr (to-vampir-opt cadr))
(const-check (const-check opcar opcadr)))
(optcar (to-vampir-opt car)))
(cond ((obj-equalp (vamp:func obj) :isZero)
(if const-check
(if (= (vamp:const opcar)
(vamp:const opcadr))
(if (typep optcar 'vamp:constant)
(if (zerop (vamp:const optcar))
zero
one)))
one)
(geb.vampir:isZero optcar)))
((obj-equalp (vamp:func obj) :negative)
(if const-check
(if (< (vamp:const opcar)
(vamp:const opcadr))
zero
one)))
(t (mapcar 'to-vampir-opt (vamp:arguments obj))))))
(let ((optcadr (to-vampir-opt (cadr (vamp:arguments obj)))))
(if (typep optcadr 'vamp:constant)
(if (< (vamp:const optcadr) 0)
zero
one)
(geb.vampir:negative car optcadr))))
(t (vamp:make-application
:func (vamp:func obj)
:arguments (mapcar 'to-vampir-opt (vamp:arguments obj)))))))

(defmethod to-vampir-opt ((obj vamp:constant))
obj)

(defmethod to-vampir-opt ((obj vamp:wire))
obj)

(defmethod to-vampir-opt ((obj geb.vampir.spec:infix))
(defmethod to-vampir-opt ((obj vamp:infix))
(let* ((lhs (vamp:lhs obj))
(rhs (vamp:rhs obj))
(oplhs (to-vampir-opt lhs))
Expand Down

0 comments on commit 8b1e421

Please sign in to comment.