From dd5a5ea1704038dc068254e81ea41cdf8a83f304 Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Sun, 22 Jul 1990 20:33:20 +0000 Subject: [PATCH] Merge in Jmiller's changes for multi-closures. --- v7/src/compiler/machines/mips/compiler.pkg | 19 ++- v7/src/compiler/machines/mips/decls.scm | 108 ++++++++++-------- v7/src/compiler/machines/mips/machin.scm | 49 +++++++- v7/src/compiler/machines/mips/make.scm-big | 6 +- v7/src/compiler/machines/mips/make.scm-little | 6 +- v7/src/compiler/machines/mips/rules1.scm | 16 ++- v7/src/compiler/machines/mips/rules3.scm | 108 ++++++++++++++---- v7/src/compiler/machines/mips/rulflo.scm | 9 +- 8 files changed, 226 insertions(+), 95 deletions(-) diff --git a/v7/src/compiler/machines/mips/compiler.pkg b/v7/src/compiler/machines/mips/compiler.pkg index a3f509353..f84069487 100644 --- a/v7/src/compiler/machines/mips/compiler.pkg +++ b/v7/src/compiler/machines/mips/compiler.pkg @@ -1,7 +1,7 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/compiler.pkg,v 1.1 1990/05/07 04:11:31 jinx Exp $ -$MC68020-Header: comp.pkg,v 1.27 90/01/22 23:45:02 GMT cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/compiler.pkg,v 1.2 1990/07/22 20:16:15 jinx Rel $ +$MC68020-Header: comp.pkg,v 1.30 90/05/03 15:16:59 GMT jinx Exp $ Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology @@ -99,7 +99,8 @@ MIT in each case. |# compiler:show-phases? compiler:show-procedures? compiler:show-subphases? - compiler:show-time-reports?)) + compiler:show-time-reports? + compiler:use-multiclosures?)) (define-package (compiler reference-contexts) (files "base/refctx") @@ -397,7 +398,9 @@ MIT in each case. |# (parent (compiler fg-optimizer)) (export (compiler top-level) setup-block-types! - setup-closure-contexts!)) + setup-closure-contexts!) + (export (compiler) + indirection-block-procedure)) (define-package (compiler fg-optimizer simplicity-analysis) (files "fgopt/simple") @@ -446,7 +449,7 @@ MIT in each case. |# (files "rtlgen/rtlgen" ;RTL generator "rtlgen/rgstmt" ;statements "rtlgen/fndvar" ;find variables - "machines/mips/rgspcm" ;special close-coded primitives + "machines/mips/rgspcm" ;special close-coded primitives "rtlbase/rtline" ;linearizer ) (parent (compiler)) @@ -483,9 +486,13 @@ MIT in each case. |# (export (compiler rtl-generator) generate/rvalue load-closure-environment + make-cons-closure-indirection + make-cons-closure-redirection + make-closure-redirection make-ic-cons make-non-trivial-closure-cons - make-trivial-closure-cons)) + make-trivial-closure-cons + redirect-closure)) (define-package (compiler rtl-generator generate/combination) (files "rtlgen/rgcomb") diff --git a/v7/src/compiler/machines/mips/decls.scm b/v7/src/compiler/machines/mips/decls.scm index 9378761a6..4d9d11518 100644 --- a/v7/src/compiler/machines/mips/decls.scm +++ b/v7/src/compiler/machines/mips/decls.scm @@ -1,7 +1,7 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/decls.scm,v 1.1 1990/05/07 04:12:47 jinx Exp $ -$MC68020-Header: decls.scm,v 4.25 90/01/18 22:43:31 GMT cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/decls.scm,v 1.2 1990/07/22 20:18:06 jinx Rel $ +$MC68020-Header: decls.scm,v 4.27 90/05/03 15:17:08 GMT jinx Exp $ Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology @@ -34,6 +34,7 @@ promotional, or sales literature without prior written consent from MIT in each case. |# ;;;; Compiler File Dependencies +;;; package: (compiler declarations) (declare (usual-integrations)) @@ -386,48 +387,52 @@ MIT in each case. |# (source-node/declarations node))))) filenames)) - (let ((front-end-base - (filename/append "base" - "blocks" "cfg1" "cfg2" "cfg3" - "contin" "ctypes" "enumer" "lvalue" - "object" "proced" "rvalue" - "scode" "subprb" "utils")) - (mips-base - (filename/append "machines/mips" "machin")) - (rtl-base - (filename/append "rtlbase" - "regset" "rgraph" "rtlcfg" "rtlobj" - "rtlreg" "rtlty1" "rtlty2")) - (cse-base - (filename/append "rtlopt" - "rcse1" "rcse2" "rcseep" "rcseht" "rcserq" "rcsesr")) - (instruction-base - (filename/append "machines/mips" "assmd" "machin")) - (lapgen-base - (append (filename/append "back" "lapgn3" "regmap") - (filename/append "machines/mips" "lapgen"))) - (assembler-base - (append (filename/append "back" "symtab") - (filename/append "machines/mips" - "instr1" "instr2a" "instr2b" "instr3"))) - (lapgen-body - (append - (filename/append "back" "lapgn1" "lapgn2" "syntax") - (filename/append "machines/mips" - "rules1" "rules2" "rules3" "rules4" - "rulfix" "rulflo" - ))) - (assembler-body - (append - (filename/append "back" "bittop") - (filename/append "machines/mips" - "instr1" "instr2a" "instr2b" "instr3")))) + (let* ((front-end-base + (filename/append "base" + "blocks" "cfg1" "cfg2" "cfg3" + "contin" "ctypes" "enumer" "lvalue" + "object" "proced" "rvalue" + "scode" "subprb" "utils")) + (mips-base + (filename/append "machines/mips" "machin")) + (rtl-base + (filename/append "rtlbase" + "regset" "rgraph" "rtlcfg" "rtlobj" + "rtlreg" "rtlty1" "rtlty2")) + (cse-base + (filename/append "rtlopt" + "rcse1" "rcseht" "rcserq" "rcsesr")) + (cse-all + (append (filename/append "rtlopt" + "rcse2" "rcseep") + cse-base)) + (instruction-base + (filename/append "machines/mips" "assmd" "machin")) + (lapgen-base + (append (filename/append "back" "lapgn3" "regmap") + (filename/append "machines/mips" "lapgen"))) + (assembler-base + (append (filename/append "back" "symtab") + (filename/append "machines/mips" + "instr1" "instr2a" "instr2b" "instr3"))) + (lapgen-body + (append + (filename/append "back" "lapgn1" "lapgn2" "syntax") + (filename/append "machines/mips" + "rules1" "rules2" "rules3" "rules4" + "rulfix" "rulflo" + ))) + (assembler-body + (append + (filename/append "back" "bittop") + (filename/append "machines/mips" + "instr1" "instr2a" "instr2b" "instr3")))) (define (file-dependency/integration/join filenames dependencies) (for-each (lambda (filename) (file-dependency/integration/make filename dependencies)) filenames)) - + (define (file-dependency/integration/make filename dependencies) (let ((node (filename->source-node filename))) (for-each (lambda (dependency) @@ -435,12 +440,12 @@ MIT in each case. |# (if (not (eq? node node*)) (source-node/link! node node*)))) dependencies))) - + (define (define-integration-dependencies directory name directory* . names) (file-dependency/integration/make (string-append directory "/" name) (apply filename/append directory* names))) - + (define-integration-dependencies "base" "object" "base" "enumer") (define-integration-dependencies "base" "enumer" "base" "object") (define-integration-dependencies "base" "utils" "base" "scode") @@ -516,17 +521,22 @@ MIT in each case. |# (append mips-base front-end-base rtl-base)) (file-dependency/integration/join - (append cse-base + (append cse-all (filename/append "rtlopt" "ralloc" "rcompr" "rdebug" "rdflow" "rerite" "rinvex" "rlife" "rtlcsm") - (filename/append "machines/mips" "rulrew") - ) + (filename/append "machines/mips" "rulrew")) (append mips-base rtl-base)) - (file-dependency/integration/join cse-base cse-base) + (file-dependency/integration/join cse-all cse-base) + + (file-dependency/integration/join + (filename/append "rtlopt" "ralloc" "rcompr" "rdebug" "rlife") + (filename/append "rtlbase" "regset")) + + (file-dependency/integration/join + (filename/append "rtlopt" "rcseht" "rcserq") + (filename/append "base" "object")) - (define-integration-dependencies "rtlopt" "rcseht" "base" "object") - (define-integration-dependencies "rtlopt" "rcserq" "base" "object") (define-integration-dependencies "rtlopt" "rlife" "base" "cfg2") (let ((dependents @@ -605,8 +615,8 @@ MIT in each case. |# ) (map (lambda (entry) `(,(car entry) - (PACKAGE/REFERENCE - (FIND-PACKAGE '(COMPILER LAP-SYNTAXER)) ',(cadr entry)))) + (PACKAGE/REFERENCE (FIND-PACKAGE '(COMPILER LAP-SYNTAXER)) + ',(cadr entry)))) '((LAP:SYNTAX-INSTRUCTION LAP:SYNTAX-INSTRUCTION-EXPANDER) (INSTRUCTION->INSTRUCTION-SEQUENCE INSTRUCTION->INSTRUCTION-SEQUENCE-EXPANDER) diff --git a/v7/src/compiler/machines/mips/machin.scm b/v7/src/compiler/machines/mips/machin.scm index d14095660..c5d72c9b9 100644 --- a/v7/src/compiler/machines/mips/machin.scm +++ b/v7/src/compiler/machines/mips/machin.scm @@ -1,7 +1,7 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/machin.scm,v 1.1 1990/05/07 04:15:24 jinx Exp $ -$MC68020-Header: machin.scm,v 4.20 90/01/18 22:43:44 GMT cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/machin.scm,v 1.2 1990/07/22 20:21:37 jinx Rel $ +$MC68020-Header: machin.scm,v 4.22 90/05/03 15:17:20 GMT jinx Exp $ Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology @@ -71,8 +71,51 @@ MIT in each case. |# (define-integrable (stack->memory-offset offset) offset) (define-integrable ic-block-first-parameter-offset 2) -(define-integrable closure-block-first-offset 2) (define-integrable execute-cache-size 2) ; Long words per UUO link slot +(define-integrable closure-entry-size + ;; Long words in a single closure entry: + ;; GC offset word + ;; JALR + ;; ADDI + 3) + +;; Given: the number of entry points in a closure, and a particular +;; entry point number. Return: the distance from that entry point to +;; the first variable slot in the closure (in words). + +(define (closure-first-offset nentries entry) + (if (zero? nentries) + 1 ; Strange boundary case + (- (* closure-entry-size (- nentries entry)) 1))) + +;; Like the above, but from the start of the complete closure object, +;; viewed as a vector, and including the header word. + +(define (closure-object-first-offset nentries) + (case nentries + ((0) + ;; Vector header only + 1) + ((1) + ;; Manifest closure header followed by single entry point + (+ 1 closure-entry-size)) + (else + ;; Manifest closure header, number of entries, then entries. + (+ 1 1 (* closure-entry-size nentries))))) + +;; Bump from one entry point to another -- distance in BYTES + +(define (closure-entry-distance nentries entry entry*) + nentries ; ignored + (* (* closure-entry-size 4) (- entry* entry))) + +;; Bump to the canonical entry point. On a RISC (which forces +;; longword alignment for entry points anyway) there is no need to +;; canonicalize. + +(define (closure-environment-adjustment nentries entry) + nentries entry ; ignored + 0) ;;;; Machine Registers diff --git a/v7/src/compiler/machines/mips/make.scm-big b/v7/src/compiler/machines/mips/make.scm-big index 889f10ac4..9e633b212 100644 --- a/v7/src/compiler/machines/mips/make.scm-big +++ b/v7/src/compiler/machines/mips/make.scm-big @@ -1,7 +1,7 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/make.scm-big,v 4.65 1990/05/07 04:09:24 jinx Exp $ -$MC68020-Header: make.scm,v 4.65 90/01/22 23:45:31 GMT cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/make.scm-big,v 4.73 1990/07/22 20:33:20 jinx Exp $ +$MC68020-Header: make.scm,v 4.73 90/05/03 15:17:24 GMT jinx Exp $ Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology @@ -42,4 +42,4 @@ MIT in each case. |# ((package/reference (find-package name) 'INITIALIZE-PACKAGE!))) '((COMPILER MACROS) (COMPILER DECLARATIONS))) -(add-system! (make-system "Liar (MIPS)" 4 65 '())) \ No newline at end of file +(add-system! (make-system "Liar (MIPS)" 4 73 '())) \ No newline at end of file diff --git a/v7/src/compiler/machines/mips/make.scm-little b/v7/src/compiler/machines/mips/make.scm-little index 321a771c1..48435c352 100644 --- a/v7/src/compiler/machines/mips/make.scm-little +++ b/v7/src/compiler/machines/mips/make.scm-little @@ -1,7 +1,7 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/make.scm-little,v 4.65 1990/05/07 04:09:24 jinx Exp $ -$MC68020-Header: make.scm,v 4.65 90/01/22 23:45:31 GMT cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/make.scm-little,v 4.73 1990/07/22 20:33:20 jinx Exp $ +$MC68020-Header: make.scm,v 4.73 90/05/03 15:17:24 GMT jinx Exp $ Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology @@ -42,4 +42,4 @@ MIT in each case. |# ((package/reference (find-package name) 'INITIALIZE-PACKAGE!))) '((COMPILER MACROS) (COMPILER DECLARATIONS))) -(add-system! (make-system "Liar (MIPS)" 4 65 '())) \ No newline at end of file +(add-system! (make-system "Liar (MIPS)" 4 73 '())) \ No newline at end of file diff --git a/v7/src/compiler/machines/mips/rules1.scm b/v7/src/compiler/machines/mips/rules1.scm index 93be425c6..3097f5864 100644 --- a/v7/src/compiler/machines/mips/rules1.scm +++ b/v7/src/compiler/machines/mips/rules1.scm @@ -1,7 +1,7 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/rules1.scm,v 1.1 1990/05/07 04:16:03 jinx Exp $ -$MC68020-Header: rules1.scm,v 4.32 90/01/18 22:43:54 GMT cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/rules1.scm,v 1.2 1990/07/22 20:24:55 jinx Rel $ +$MC68020-Header: rules1.scm,v 4.33 90/05/03 15:17:28 GMT jinx Exp $ Copyright (c) 1989, 1990 Massachusetts Institute of Technology @@ -85,13 +85,21 @@ MIT in each case. |# (object->address target))) (define-rule statement - ;; add a constant to a register's contents + ;; add a distance (in longwords) to a register's contents (ASSIGN (REGISTER (? target)) (OFFSET-ADDRESS (REGISTER (? source)) (? offset))) (standard-unary-conversion source target (lambda (source target) (add-immediate (* 4 offset) source target)))) +(define-rule statement + ;; add a distance (in bytes) to a register's contents + (ASSIGN (REGISTER (? target)) + (BYTE-OFFSET-ADDRESS (REGISTER (? source)) (? offset))) + (standard-unary-conversion source target + (lambda (source target) + (add-immediate offset source target)))) + (define-rule statement ;; read an object from memory (ASSIGN (REGISTER (? target)) (OFFSET (REGISTER (? address)) (? offset))) @@ -286,4 +294,4 @@ MIT in each case. |# (ASSIGN (BYTE-OFFSET (REGISTER (? address)) (? offset)) (CHAR->ASCII (REGISTER (? source)))) (LAP (SB ,(standard-source! source) - (OFFSET ,offset ,(standard-source! address))))) + (OFFSET ,offset ,(standard-source! address))))) \ No newline at end of file diff --git a/v7/src/compiler/machines/mips/rules3.scm b/v7/src/compiler/machines/mips/rules3.scm index 5ede4100a..aae2266d4 100644 --- a/v7/src/compiler/machines/mips/rules3.scm +++ b/v7/src/compiler/machines/mips/rules3.scm @@ -1,7 +1,7 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/rules3.scm,v 1.1 1990/05/07 04:16:34 jinx Exp $ -$MC68020-Header: rules3.scm,v 4.23 90/01/18 22:44:09 GMT cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/rules3.scm,v 1.2 1990/07/22 20:26:45 jinx Exp $ +$MC68020-Header: rules3.scm,v 4.24 90/05/03 15:17:33 GMT jinx Exp $ Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology @@ -446,7 +446,11 @@ MIT in each case. |# (deposit-type (ucode-type compiled-entry) register)) (define-rule statement - (CLOSURE-HEADER (? internal-label)) + (CLOSURE-HEADER (? internal-label) (? nentries) (? entry)) + entry ; ignored -- non-RISCs only + (if (zero? nentries) + (error "Closure header for closure with no entries!" + internal-label)) (let ((procedure (label->object internal-label))) (let ((gc-label (generate-label)) (external-label (rtl-procedure/external-label procedure))) @@ -460,42 +464,102 @@ MIT in each case. |# (LABEL ,internal-label) ,@(interrupt-check gc-label))))) -(define (cons-closure target label min max size ->entry?) +(define (build-gc-offset-word offset code-word) + (let ((encoded-offset (quotient offset 2))) + (if (eq? endianness 'LITTLE) + (+ (* encoded-offset #x10000) code-word) + (+ (* code-word #x10000) encoded-offset)))) + +(define (cons-closure target label min max size) (let ((flush-reg (clear-registers! regnum:interface-index))) (need-register! regnum:interface-index) - (let ((dest (standard-target! target))) + (let ((dest (standard-target! target)) + (gc-offset-word + (build-gc-offset-word + 8 (make-procedure-code-word min max)))) ;; Note: dest is used as a temporary before the JALR ;; instruction, and is written immediately afterwards. ;; The interface (scheme_to_interface-88) expects: - ;; 1: size of closure = size+3 + ;; 1: size of closure = size+closure entry size ;; 4: offset to destination label ;; 25: GC offset and arity information + ;; NOTE: setup of 25 has implict the endian-ness! (LAP ,@flush-reg - ,@(load-immediate (+ size 3) 1) - (LUI 25 4) + ,@(load-immediate (+ size closure-entry-size) 1) + (LUI 25 ,(quotient gc-offset-word #x10000)) (PC-RELATIVE-OFFSET 4 16 ,(rtl-procedure/external-label (label->object label))) (ADDI ,dest ,regnum:scheme-to-interface -88) ; + 4 - (JALR ,regnum:linkage ,dest) ; + 8 - (ORI 25 25 ,(make-procedure-code-word min max)) ; +12 + (JALR 31 ,dest) ; + 8 + (ORI 25 25 ,(remainder gc-offset-word #x10000)) ; +12 ,@(add-immediate (* 4 (- (+ size 2))) ; +16 - regnum:free dest) - ,@(if ->entry? (address->entry dest) (LAP)))))) - -(define-rule statement - (ASSIGN (REGISTER (? target)) - (CONS-POINTER (MACHINE-CONSTANT (? type)) - (CONS-CLOSURE (ENTRY:PROCEDURE (? procedure-label)) - (? min) (? max) (? size)))) - (QUALIFIER (= type (ucode-type compiled-entry))) - (cons-closure target procedure-label min max size true)) + regnum:free dest))))) (define-rule statement (ASSIGN (REGISTER (? target)) (CONS-CLOSURE (ENTRY:PROCEDURE (? procedure-label)) (? min) (? max) (? size))) - (QUALIFIER (= type (ucode-type compiled-entry))) - (cons-closure target procedure-label min max size false)) + (cons-closure target procedure-label min max size)) + +(define-rule statement + (ASSIGN (REGISTER (? target)) + (CONS-MULTICLOSURE (? nentries) (? size) (? entries))) + ;; entries is a vector of all the entry points + (case nentries + ((0) + (let ((dest (standard-target! target)) + (temp (standard-temporary!))) + (LAP (ADD ,dest 0 ,regnum:free) + ,@(load-non-pointer + (ucode-type manifest-vector) size temp) + (SW ,temp (OFFSET 0 ,regnum:free)) + (ADDI ,regnum:free ,regnum:free ,(* 4 (+ size 1)))))) + ((1) + (let ((entry (vector-ref entries 0))) + (cons-closure + target (car entry) (cadr entry) (caddr entry) size))) + (else + (cons-multiclosure target nentries size (vector->list entries))))) + +(define (cons-multiclosure target nentries size entries) + ;; Assembly support called with: + ;; 31 is the return address + ;; 1 has the GC offset and format words + ;; 4 has the offset from return address to destination + ;; Note that none of these are allocatable registers + (let ((total-size (+ size 1 (* closure-entry-size nentries))) + (dest (standard-target! target)) + (temp (standard-temporary!))) + + (define (generate-entries entries offset) + (if (null? entries) + (LAP) + (let ((entry (car entries))) + (let ((gc-offset-word + (build-gc-offset-word + offset + (make-procedure-code-word + (cadr entry) (caddr entry))))) + (LAP + (LUI 1 ,(quotient gc-offset-word #x10000)) + (PC-RELATIVE-OFFSET 4 16 ,(rtl-procedure/external-label + (label->object (car entry)))) + (ADDI ,temp ,regnum:scheme-to-interface -80) ; + 4 + (JALR 31 ,temp) ; + 8 + (ORI 1 1 ,(remainder gc-offset-word #x10000)) ; + 12 + ,@(generate-entries (cdr entries) ; + 16 + (+ (* closure-entry-size 4) + offset))))))) + + (LAP + ,@(load-non-pointer (ucode-type manifest-closure) total-size temp) + (SW ,temp (OFFSET 0 ,regnum:free)) + ,@(load-immediate (build-gc-offset-word 0 nentries) temp) + (SW ,temp (OFFSET 4 ,regnum:free)) + (ADDI ,regnum:free ,regnum:free 8) + (ADDI ,dest ,regnum:free 4) + ,@(generate-entries entries 12) + (ADDI ,regnum:free ,regnum:free ,(* 4 size))))) ;;;; Entry Header ;;; This is invoked by the top level of the LAP generator. diff --git a/v7/src/compiler/machines/mips/rulflo.scm b/v7/src/compiler/machines/mips/rulflo.scm index e5079b763..032b5cc5e 100644 --- a/v7/src/compiler/machines/mips/rulflo.scm +++ b/v7/src/compiler/machines/mips/rulflo.scm @@ -1,7 +1,7 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/rulflo.scm,v 1.1 1990/05/07 04:17:41 jinx Exp $ -$MC68020-Header: rules1.scm,v 4.32 90/01/18 22:43:54 GMT cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/rulflo.scm,v 1.2 1990/07/22 20:28:36 jinx Rel $ +$MC68020-Header: rules1.scm,v 4.33 90/05/03 15:17:28 GMT jinx Exp $ Copyright (c) 1989, 1990 Massachusetts Institute of Technology @@ -200,6 +200,5 @@ MIT in each case. |# (lambda (label) (LAP (BC1F (@PCR ,label)) (NOP)))) (if (eq? cc 'C.GT) - (LAP (C.LT DOUBLE ,r2 ,r1)) - (LAP (,cc DOUBLE ,r1 ,r2)))) - \ No newline at end of file + (LAP (C.LT DOUBLE ,r2 ,r1) (NOP)) + (LAP (,cc DOUBLE ,r1 ,r2) (NOP)))) \ No newline at end of file -- 2.25.1