#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/lapgen.scm,v 1.11 1992/08/20 01:23:26 jinx Exp $
+$Id: lapgen.scm,v 1.12 1992/12/28 22:01:14 cph Exp $
Copyright (c) 1988-1992 Massachusetts Institute of Technology
(cdr (or (assq operator (cdr methods))
(error "Unknown operator" operator))))
+(define-integrable (arithmetic-method? operator methods)
+ (assq operator (cdr methods)))
+
(define-integrable (ea/mode ea) (car ea))
(define-integrable (register-ea/register ea) (cadr ea))
(define-integrable (offset-ea/offset ea) (cadr ea))
#| -*-Scheme-*-
-$Id: rulfix.scm,v 1.7 1992/12/22 02:20:45 cph Exp $
+$Id: rulfix.scm,v 1.8 1992/12/28 22:01:22 cph Exp $
Copyright (c) 1989-1992 Massachusetts Institute of Technology
(REGISTER (? source))
(OBJECT->FIXNUM (CONSTANT (? constant)))
(? overflow?)))
+ (QUALIFIER (fixnum-2-args/operator/register*constant? operation))
(standard-unary-conversion source target
(lambda (source target)
((fixnum-2-args/operator/register*constant operation)
(OBJECT->FIXNUM (CONSTANT (? constant)))
(REGISTER (? source))
(? overflow?)))
+ (QUALIFIER
+ (or (fixnum-2-args/operator/constant*register? operation)
+ (and (fixnum-2-args/commutative? operation)
+ (fixnum-2-args/operator/register*constant? operation))))
(standard-unary-conversion source target
(lambda (source target)
(if (fixnum-2-args/commutative? operation)
(define (fixnum-2-args/operator/register*constant operation)
(lookup-arithmetic-method operation fixnum-methods/2-args/register*constant))
+(define (fixnum-2-args/operator/register*constant? operation)
+ (arithmetic-method? operation fixnum-methods/2-args/register*constant))
+
(define fixnum-methods/2-args/register*constant
(list 'FIXNUM-METHODS/2-ARGS/REGISTER*CONSTANT))
(define (fixnum-2-args/operator/constant*register operation)
- (lookup-arithmetic-method operation
- fixnum-methods/2-args/constant*register))
+ (lookup-arithmetic-method operation fixnum-methods/2-args/constant*register))
+
+(define (fixnum-2-args/operator/constant*register? operation)
+ (arithmetic-method? operation fixnum-methods/2-args/constant*register))
(define fixnum-methods/2-args/constant*register
(list 'FIXNUM-METHODS/2-ARGS/CONSTANT*REGISTER))