From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9823 invoked by alias); 22 Feb 2007 18:14:44 -0000 Received: (qmail 9726 invoked by uid 22791); 22 Feb 2007 18:14:42 -0000 X-Spam-Check-By: sourceware.org Received: from Unknown (HELO elsdt-razorfish.arc.com) (194.202.198.226) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 22 Feb 2007 18:14:35 +0000 Received: from elsdt-razorfish.arc.com (localhost.localdomain [127.0.0.1]) by elsdt-razorfish.arc.com (8.12.11.20060308/8.12.11) with ESMTP id l1MIDfK2032557; Thu, 22 Feb 2007 18:13:41 GMT Received: (from joernr@localhost) by elsdt-razorfish.arc.com (8.12.11.20060308/8.12.11/Submit) id l1MIDfBY032555; Thu, 22 Feb 2007 18:13:41 GMT Date: Thu, 22 Feb 2007 18:14:00 -0000 From: Joern Rennecke To: Dave Brolley Cc: cgen@sources.redhat.com Subject: Re: insert evaluation for multi-ifields broken Message-ID: <20070222181341.GD8064@elsdt-razorfish.arc.com> References: <20070214201406.GD18550@elsdt-razorfish.arc.com> <45D619DD.7010602@redhat.com> <20070219033843.GA31910@elsdt-razorfish.arc.com> <45D9C06A.4030903@redhat.com> <20070219155503.GB13511@elsdt-razorfish.arc.com> <20070219160735.GJ27135@redhat.com> <20070219181352.GC13511@elsdt-razorfish.arc.com> <45D9EA38.5040002@redhat.com> <20070222160755.GB8064@elsdt-razorfish.arc.com> <45DDCB1D.6050605@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <45DDCB1D.6050605@redhat.com> User-Agent: Mutt/1.4.1i Mailing-List: contact cgen-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cgen-owner@sourceware.org X-SW-Source: 2007-q1/txt/msg00061.txt.bz2 On Thu, Feb 22, 2007 at 11:55:57AM -0500, Dave Brolley wrote: > Joern Rennecke wrote: > > >When I want to put a constant into a multi-ifield, the > >exact instructions how to set the subfields are apparently ignored, and the > >total value is copied into the subfields. > > > > > This does appear to be broken. This is probably the first time someone > has attempted this, since you could use f-a and f-c directly. The real code is much more complex (80 KB .cpu file, generating - among other things - three decode*.c files in excess of 700 KB each). The multi-ifield is usually used for a register operand. However, there are some special instructions where this operand is not needed, so a bunch of them can be encoded by using different values in this field - I implemented this with a normal-insn-enum, which uses the multi-ifield. Individual values of this enum are then placed in the format of the the separate insns, whcih is equivalent to putting a constant into the field.