From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gcc-patches-return-52334-listarch-gcc-patches=gcc.gnu.org@gcc.gnu.org>
Received: (qmail 15564 invoked by alias); 4 Feb 2002 00:57:15 -0000
Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Archive: <http://gcc.gnu.org/ml/gcc-patches/>
List-Post: <mailto:gcc-patches@gcc.gnu.org>
List-Help: <mailto:gcc-patches-help@gcc.gnu.org>
Sender: gcc-patches-owner@gcc.gnu.org
Received: (qmail 15471 invoked from network); 4 Feb 2002 00:57:14 -0000
Received: from unknown (HELO igw3.watson.ibm.com) (198.81.209.18)
  by sources.redhat.com with SMTP; 4 Feb 2002 00:57:14 -0000
Received: from sp1n293en1.watson.ibm.com (sp1n293en1.watson.ibm.com [9.2.112.57])
	by igw3.watson.ibm.com (8.11.4/8.11.4) with ESMTP id g140v7i17946;
	Sun, 3 Feb 2002 19:57:07 -0500
Received: from makai.watson.ibm.com (makai.watson.ibm.com [9.2.216.144])
	by sp1n293en1.watson.ibm.com (8.11.4/8.11.4) with ESMTP id g140v7O29618;
	Sun, 3 Feb 2002 19:57:07 -0500
Received: from watson.ibm.com (localhost [127.0.0.1])
	by makai.watson.ibm.com (AIX4.3/8.9.3/8.9.3/01-10-2000) with ESMTP id TAA21984;
	Sun, 3 Feb 2002 19:57:07 -0500
Message-Id: <200202040057.TAA21984@makai.watson.ibm.com>
To: Geoff Keating <geoffk@redhat.com>
cc: gcc-patches@gcc.gnu.org
Subject: [PATCH] PowerPC fsel PR5217
Date: Sun, 03 Feb 2002 19:14:00 -0000
From: David Edelsohn <dje@watson.ibm.com>
X-SW-Source: 2002-02/txt/msg00200.txt.bz2

	This problem seems to be a mismatch between the mode of the
if_then_else in the generated RTL versus the machine description.  I think
this mixed mode pattern only can be generated by GCC internally, not any
machine description pattern, so we might as well follow the canonical
modes that GCC chooses.

	Does this seem correct to you, Geoff?  Or should the if_then_else
be the other mode?

David


Index: rs6000.md
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/rs6000/rs6000.md,v
retrieving revision 1.162
diff -c -p -r1.162 rs6000.md
*** rs6000.md	2002/01/29 22:49:55	1.162
--- rs6000.md	2002/02/04 00:46:26
***************
*** 5084,5090 ****
  
  (define_insn "*fseldfsf4"
    [(set (match_operand:SF 0 "gpc_reg_operand" "=f")
! 	(if_then_else:SF (ge (match_operand:DF 1 "gpc_reg_operand" "f")
  			     (match_operand:DF 4 "zero_fp_constant" "F"))
  			 (match_operand:SF 2 "gpc_reg_operand" "f")
  			 (match_operand:SF 3 "gpc_reg_operand" "f")))]
--- 5084,5090 ----
  
  (define_insn "*fseldfsf4"
    [(set (match_operand:SF 0 "gpc_reg_operand" "=f")
! 	(if_then_else:DF (ge (match_operand:DF 1 "gpc_reg_operand" "f")
  			     (match_operand:DF 4 "zero_fp_constant" "F"))
  			 (match_operand:SF 2 "gpc_reg_operand" "f")
  			 (match_operand:SF 3 "gpc_reg_operand" "f")))]
***************
*** 5248,5254 ****
  
  (define_insn "*fselsfdf4"
    [(set (match_operand:DF 0 "gpc_reg_operand" "=f")
! 	(if_then_else:DF (ge (match_operand:SF 1 "gpc_reg_operand" "f")
  			     (match_operand:SF 4 "zero_fp_constant" "F"))
  			 (match_operand:DF 2 "gpc_reg_operand" "f")
  			 (match_operand:DF 3 "gpc_reg_operand" "f")))]
--- 5248,5254 ----
  
  (define_insn "*fselsfdf4"
    [(set (match_operand:DF 0 "gpc_reg_operand" "=f")
! 	(if_then_else:SF (ge (match_operand:SF 1 "gpc_reg_operand" "f")
  			     (match_operand:SF 4 "zero_fp_constant" "F"))
  			 (match_operand:DF 2 "gpc_reg_operand" "f")
  			 (match_operand:DF 3 "gpc_reg_operand" "f")))]