(5 Ra)
(5 Rn)
(5 Rd)))))))))
- (define-muladdsub-instruction madd #b000 0) ;Multiply-Add
- (define-muladdsub-instruction msub #b000 1)) ;Multiply-Subtract
+ (define-muladdsub-instruction MADD #b000 0) ;Multiply-Add
+ (define-muladdsub-instruction MSUB #b000 1)) ;Multiply-Subtract
(let-syntax
((define-widemul-instruction
(if (= source1 source2) ;XXX Avoid this earlier on.
(load-fixnum-constant target 1)
(LAP (SDIV X ,target ,source1 ,source2)
+ ;; source1 = n 2^t, source2 = d 2^t, target = q
+ ;; target := q 2^t
(LSL X ,target ,target (&U ,scheme-type-width))))))
(define-arithmetic-method 'FIXNUM-REMAINDER fixnum-methods/2-args
(if (= source1 source2) ;XXX Avoid this earlier on.
(load-fixnum-constant target 0)
(LAP (SDIV X ,target ,source1 ,source2)
- ;; source1 = n, source2 = d, target = q
- ;; target := n - d*q
- (MSUB X ,target ,source1 ,source2 ,target)
- (LSL X ,target ,target (&U ,scheme-type-width))))))
+ ;; source1 = n 2^t, source2 = d 2^t, target = q
+ ;; target := (n - d*q) 2^t
+ (MSUB X ,target ,source2 ,target ,source1)))))
;; XXX Constant operands.
;; XXX Fast division by multiplication.