diff --git a/scheme/cyclone/primitives.sld b/scheme/cyclone/primitives.sld index a694d958..b72691a5 100644 --- a/scheme/cyclone/primitives.sld +++ b/scheme/cyclone/primitives.sld @@ -903,30 +903,17 @@ (define (prim:inline-convert-prim-call prim-call) (cond - ((equal? (car prim-call) '+) - (->dyadic (cons 'Cyc-fast-plus (cdr prim-call)))) - ((equal? (car prim-call) '*) - (->dyadic (cons 'Cyc-fast-mul (cdr prim-call)))) - ;((and (equal? (car prim-call) '-) (= (length prim-call) 3)) - ; (cons 'Cyc-fast-sub (cdr prim-call))) - ((and (equal? (car prim-call) '-) (= (length prim-call) 2)) - `(Cyc-fast-sub 0 ,@(cdr prim-call))) - ((equal? (car prim-call) '-) - (->dyadic (cons 'Cyc-fast-sub (cdr prim-call)))) - ((equal? (car prim-call) '/) - (->dyadic (cons 'Cyc-fast-div (cdr prim-call)))) - ;((and (equal? (car prim-call) '/) (= (length prim-call) 3)) - ; (cons 'Cyc-fast-div (cdr prim-call))) - ((and (equal? (car prim-call) '=) (= (length prim-call) 3)) - (cons 'Cyc-fast-eq (cdr prim-call))) - ((and (equal? (car prim-call) '>) (= (length prim-call) 3)) - (cons 'Cyc-fast-gt (cdr prim-call))) - ((and (equal? (car prim-call) '<) (= (length prim-call) 3)) - (cons 'Cyc-fast-lt (cdr prim-call))) - ((and (equal? (car prim-call) '>=) (= (length prim-call) 3)) - (cons 'Cyc-fast-gte (cdr prim-call))) - ((and (equal? (car prim-call) '<=) (= (length prim-call) 3)) - (cons 'Cyc-fast-lte (cdr prim-call))) + ((equal? (car prim-call) '+) (->dyadic (cons 'Cyc-fast-plus (cdr prim-call)))) + ((equal? (car prim-call) '*) (->dyadic (cons 'Cyc-fast-mul (cdr prim-call)))) + ((and (equal? (car prim-call) '-) (= (length prim-call) 2)) `(Cyc-fast-sub 0 ,@(cdr prim-call))) ;; Special case, fast negation + ((equal? (car prim-call) '-) (->dyadic (cons 'Cyc-fast-sub (cdr prim-call)))) + ((and (equal? (car prim-call) '/) (= (length prim-call) 2)) `(Cyc-fast-div 1 ,@(cdr prim-call))) ;; Special case, fast inversion + ((equal? (car prim-call) '/) (->dyadic (cons 'Cyc-fast-div (cdr prim-call)))) + ((and (equal? (car prim-call) '=) (= (length prim-call) 3)) (cons 'Cyc-fast-eq (cdr prim-call))) + ((and (equal? (car prim-call) '>) (= (length prim-call) 3)) (cons 'Cyc-fast-gt (cdr prim-call))) + ((and (equal? (car prim-call) '<) (= (length prim-call) 3)) (cons 'Cyc-fast-lt (cdr prim-call))) + ((and (equal? (car prim-call) '>=) (= (length prim-call) 3)) (cons 'Cyc-fast-gte (cdr prim-call))) + ((and (equal? (car prim-call) '<=) (= (length prim-call) 3)) (cons 'Cyc-fast-lte (cdr prim-call))) (else prim-call)))