From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20488 invoked by alias); 21 Jun 2002 19:13:39 -0000 Mailing-List: contact cgen-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cgen-owner@sources.redhat.com Received: (qmail 20460 invoked from network); 21 Jun 2002 19:13:35 -0000 Received: from unknown (HELO neon-gw.transmeta.com) (63.209.4.196) by sources.redhat.com with SMTP; 21 Jun 2002 19:13:35 -0000 Received: (from root@localhost) by neon-gw.transmeta.com (8.9.3/8.9.3) id MAA10615; Fri, 21 Jun 2002 12:13:31 -0700 Received: from mailhost.transmeta.com(10.1.1.15) by neon-gw.transmeta.com via smap (V2.1) id xma010589; Fri, 21 Jun 02 12:13:17 -0700 Received: from casey.transmeta.com (casey.transmeta.com [10.10.25.22]) by deepthought.transmeta.com (8.11.6/8.11.6) with ESMTP id g5LJDJj02324; Fri, 21 Jun 2002 12:13:20 -0700 (PDT) Received: (from dje@localhost) by casey.transmeta.com (8.9.3/8.7.3) id MAA16388; Fri, 21 Jun 2002 12:13:19 -0700 From: Doug Evans MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15635.31439.589711.692123@casey.transmeta.com> Date: Fri, 21 Jun 2002 12:13:00 -0000 To: Hans-Peter Nilsson Cc: cgen@sources.redhat.com Subject: [RFA:] Fix lsb? bug with insn fields beyond base insn size. In-Reply-To: <200206190111.DAA19613@ignucius.axis.se> References: <200206190111.DAA19613@ignucius.axis.se> X-SW-Source: 2002-q2/txt/msg00032.txt.bz2 Not something of your making, but one thing that can be cleaned up in -gen-extract-word is it's use of current-arch-insn-lsb0?. Either it should use the lsb0? argument, or the lsb0? argument should be removed. I don't have a strong preference which. [grep for >>>] (define (-gen-extract-word word-name word-start word-length start length unsigned? lsb0?) ; ??? lsb0? (let ((word-end (+ word-start word-length)) (end (+ start length)) (base (if (< start word-start) word-start start))) (string-append "(" "EXTRACT_" >>>>>>> (if (current-arch-insn-lsb0?) "LSB0" "MSB0") (if (and (not unsigned?) ; Only want sign extension for word with sign bit. (bitrange-overlap? start 1 word-start word-length lsb0?)) "_INT (" "_UINT (") word-name ", " (number->string word-length) ", " (number->string (if (< start word-start) 0 (- start word-start))) ", " (number->string (if (< end word-end) (- end base) (- word-end base))) ") << " (number->string (if (> end word-end) (- end word-end) 0)) ")")) )