From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24078 invoked by alias); 20 Aug 2011 12:15:16 -0000 Received: (qmail 24040 invoked by uid 22791); 20 Aug 2011 12:15:12 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from mail-gx0-f175.google.com (HELO mail-gx0-f175.google.com) (209.85.161.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 20 Aug 2011 12:14:58 +0000 Received: by gxk3 with SMTP id 3so2821643gxk.20 for ; Sat, 20 Aug 2011 05:14:57 -0700 (PDT) Received: by 10.150.69.3 with SMTP id r3mr433719yba.223.1313842497576; Sat, 20 Aug 2011 05:14:57 -0700 (PDT) Received: from pauldell (124-149-34-246.dyn.iinet.net.au [124.149.34.246]) by mx.google.com with ESMTPS id o4sm2622886ybc.0.2011.08.20.05.14.54 (version=SSLv3 cipher=OTHER); Sat, 20 Aug 2011 05:14:56 -0700 (PDT) Message-ID: <27D3B68B734445E5A90DE9F906491E91@pauldell> From: "Paul Edwards" To: "Ulrich Weigand" Cc: Subject: Re: i370 port Date: Sat, 20 Aug 2011 12:15:00 -0000 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=response Content-Transfer-Encoding: 7bit Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2011-08/txt/msg00364.txt.bz2 Adding this code: C:\devel\gcc\gcc\config\i370>cvs diff i370.md Index: i370.md =================================================================== RCS file: c:\cvsroot/gcc/gcc/config/i370/i370.md,v retrieving revision 1.21 diff -r1.21 i370.md 845a846,851 > if (operands[1] == const0_rtx) > { > CC_STATUS_INIT; > mvs_check_page (0, 6, 8); > return \"MVC %O0(8,%R0),=XL8'00'\"; > } to the i370.md definition: ; ; movdi instruction pattern(s). ; (define_insn "" [(set (match_operand:DI 0 "nonimmediate_operand" "=d,m,S") (match_operand:DI 1 "general_operand" "g,d,SF"))] ;; [(set (match_operand:DI 0 "r_or_s_operand" "=dS,m") ;; (match_operand:DI 1 "r_or_s_operand" "diS*fF,d*fF"))] "TARGET_CHAR_INSTRUCTIONS" "* { check_label_emit (); if (REG_P (operands[0])) { if (FP_REG_P (operands[1])) { mvs_check_page (0, 8, 0); return \"STD %1,\" CONVLO \"(,13)\;LM %0,%N0,\" CONVLO \"(13)\"; } if (REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"LR %0,%1\;LR %N0,%N1\"; } if (operands[1] == const0_rtx) { CC_STATUS_INIT; mvs_check_page (0, 4, 0); return \"SLR %0,%0\;SLR %N0,%N0\"; } if (GET_CODE (operands[1]) == CONST_INT && (unsigned) INTVAL (operands[1]) < 4096) { CC_STATUS_INIT; mvs_check_page (0, 6, 0); return \"SLR %0,%0\;LA %N0,%c1(0,0)\"; } if (GET_CODE (operands[1]) == CONST_INT) { CC_STATUS_SET (operands[0], operands[1]); mvs_check_page (0, 8, 0); return \"L %0,%1\;SRDA %0,32\"; } if (GET_CODE (operands[1]) == CONST_DOUBLE) { mvs_check_page (0, 6, 8); return \"LM %0,%N0,%1\"; } mvs_check_page (0, 4, 0); /*return \"LM %0,%N0,%1\";*/ return \"L %0,%1\;L %N0,4+%1\"; } else if (FP_REG_P (operands[1])) { mvs_check_page (0, 4, 0); return \"STD %1,%0\"; } else if (REG_P (operands[1])) { mvs_check_page (0, 4, 0); /*return \"STM %1,%N1,%0\"; */ return \"ST %1,%0\;ST %N1,4+%0\"; } if (operands[1] == const0_rtx) { CC_STATUS_INIT; mvs_check_page (0, 6, 8); return \"MVC %O0(8,%R0),=XL8'00'\"; } mvs_check_page (0, 6, 8); return \"MVC %O0(8,%R0),%1\"; }" [(set_attr "length" "8")] ) forces it to use XL8'00' instead of the default F'0' and that seems to work. Does that seem like a proper solution to you? Unfortunately there's still another problem I've noticed. I'll put that in another message after I've investigated it. BFN. Paul.