From f2cad1923596fd73b250b16cb08bf63769a37963 Mon Sep 17 00:00:00 2001 From: Stephen Adams Date: Thu, 16 Mar 1995 05:27:46 +0000 Subject: [PATCH] Added rule to prevent tagging of a byte with 0. --- v8/src/compiler/machines/spectrum/rulrew.scm | 24 +++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/v8/src/compiler/machines/spectrum/rulrew.scm b/v8/src/compiler/machines/spectrum/rulrew.scm index d87fe90f4..ccdbcd816 100644 --- a/v8/src/compiler/machines/spectrum/rulrew.scm +++ b/v8/src/compiler/machines/spectrum/rulrew.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Id: rulrew.scm,v 1.1 1994/11/19 02:08:04 adams Exp $ +$Id: rulrew.scm,v 1.2 1995/03/16 05:27:46 adams Exp $ Copyright (c) 1990-1993 Massachusetts Institute of Technology @@ -150,8 +150,9 @@ MIT in each case. |# (non-pointer-object? (rtl:constant-value expression)))) -;;; These rules are losers because there's no abstract way to cons a -;;; statement or a predicate without also getting some CFG structure. +;;; These rules are losers (i.e. have no effect) because there's no +;;; abstract way to cons a statement or a predicate without also +;;; getting some CFG structure. (define-rule rewriting ;; Use register 0, always 0. @@ -171,6 +172,18 @@ MIT in each case. |# (QUALIFIER (rtl:immediate-zero-constant? comparand)) (list 'EQ-TEST source (rtl:make-machine-constant 0))) +(define-rule add-pre-cse-rewriting-rule! + (EQ-TEST (REGISTER (? comparand register-known-fixnum-constant)) (? source)) + (QUALIFIER + (fits-in-5-bits-signed? (known-fixnum-constant/fixnum-value comparand))) + (list `EQ-TEST comparand source)) + +(define-rule add-pre-cse-rewriting-rule! + (EQ-TEST (? source) (REGISTER (? comparand register-known-fixnum-constant))) + (QUALIFIER + (fits-in-5-bits-signed? (known-fixnum-constant/fixnum-value comparand))) + (list `EQ-TEST comparand source)) + (define (rtl:immediate-zero-constant? expression) (cond ((rtl:constant? expression) (let ((value (rtl:constant-value expression))) @@ -321,6 +334,11 @@ MIT in each case. |# (rtl:has-type-zero? datum))) datum) +(define-rule add-pre-cse-rewriting-rule! + (CONS-NON-POINTER (MACHINE-CONSTANT 0) (? datum)) + (QUALIFIER (rtl:has-type-zero? datum)) + datum) + (define (rtl:has-type-zero? expr) (or (value-class=ascii? (rtl:expression-value-class expr)) (value-class=datum? (rtl:expression-value-class expr)) -- 2.25.1