From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14401 invoked by alias); 10 Dec 2001 21:59:00 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 13504 invoked from network); 10 Dec 2001 21:57:37 -0000 Received: from unknown (HELO motgate2.mot.com) (136.182.1.10) by sources.redhat.com with SMTP; 10 Dec 2001 21:57:37 -0000 Received: [from mothost.mot.com (mothost.mot.com [129.188.137.101]) by motgate2.mot.com (motgate2 2.1) with ESMTP id OAA20205 for ; Mon, 10 Dec 2001 14:57:18 -0700 (MST)] Received: [from mail.wm.sps.mot.com ([199.10.246.2]) by mothost.mot.com (MOT-mothost 2.0) with ESMTP id OAA05040 for ; Mon, 10 Dec 2001 14:57:17 -0700 (MST)] Received: from hyper.wm.sps.mot.com (hyper.wm.sps.mot.com [199.10.246.43]) by mail.wm.sps.mot.com (8.9.3/8.9.3) with ESMTP id QAA11325; Mon, 10 Dec 2001 16:57:10 -0500 Received: by hyper.wm.sps.mot.com (8.11.2) id fBALvF319525; Mon, 10 Dec 2001 16:57:15 -0500 Date: Mon, 10 Dec 2001 13:59:00 -0000 Message-Id: <200112102157.fBALvF319525@hyper.wm.sps.mot.com> From: Peter Barada To: rth@redhat.com CC: Peter.Barada@motorola.com, gcc@gcc.gnu.org In-reply-to: <20011210131020.C23739@redhat.com> (message from Richard Henderson on Mon, 10 Dec 2001 13:10:20 -0800) Subject: Re: Restricted addressing modes in ColdFire FPU for DFmode References: <200112080107.fB817Vs12521@hyper.wm.sps.mot.com> <20011208190919.B16973@redhat.com> <200112101607.fBAG7Pv24134@hyper.wm.sps.mot.com> <20011210131020.C23739@redhat.com> X-SW-Source: 2001-12/txt/msg00555.txt.bz2 >> Is that GO_IF_LEGITMATE_ADDRESS()? > >Yes. Thanks. From that suggestion I abandoned my previous path, and started hacking up a version for coldfire, and I have almost everything working(or at least load/store, add/sub/mul/div) except for addresses such as: (mem/s:DF (plus:SI (reg:SI 36) (reg:SI 40)) 0) I modified GO_IF_LEGITIMATE_ADDRESS to be: #define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \ { if (check_v4e_fpu_address(MODE, X)) { \ GO_IF_NONINDEXED_ADDRESS (X, ADDR); \ GO_IF_INDEXED_ADDRESS (X, ADDR); \ if (flag_pic && MODE == CASE_VECTOR_MODE && GET_CODE (X) == PLUS \ && LEGITIMATE_INDEX_P (XEXP (X, 0)) \ && GET_CODE (XEXP (X, 1)) == LABEL_REF) \ goto ADDR; \ } \ } int check_v4e_legitimate_address(MODE, X) enum machine_mode MODE; rtx X; { /* If v4e and float, only accept addressing modes 2, 3, 4, and 5 */ if (TARGET_FPU_V4E && GET_MODE_CLASS (MODE) == MODE_FLOAT) { /* mode 2 */ if (LEGITIMATE_BASE_REG_P(X)) return TRUE; /* mode 3&4 */ if ((GET_CODE (X) == PRE_DEC || GET_CODE (X) == POST_INC) && LEGITIMATE_BASE_REG_P (XEXP (X, 0))) return TRUE; /* mode 5 */ if (GET_CODE (X) == PLUS && LEGITIMATE_BASE_REG_P (XEXP (X, 0)) && GET_CODE (XEXP (X, 1)) == CONST_INT && (((unsigned) INTVAL (XEXP (X, 1)) + 0x8000) < 0x10000)) return TRUE; return FALSE; } return TRUE; } I'd have thourhg that check_v4e_legitimate_address() would have rejected double indexed addressing (addressing mode 6), but I confident I can figure out what's gone wrong... Again, thanks for the suggestion. -- Peter Barada Peter.Barada@motorola.com Wizard 781-852-2768 (direct) WaveMark Solutions(wholly owned by Motorola) 781-270-0193 (fax)