This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PR 15433


Hi,
the testcase hits broken splitter.  I am quite surprised that fcmov
having one of arms 0 is so rare so we didn't hit it earlier, but it
really seems to be the case...

void
gluGetNurbsProperty (float nurbsValue, float *value)
{
  if (nurbsValue == 1.0)
    *value = 0x1;
  else
    *value = 0x0;
}

Honza

2004-06-16  Jan Hubicka  <jh@suse.cz>
	* i386.md (SSE SF cmov 0 splitter): The conditional is VOIDmode; fix
	operand numbering in the output template.
	(SSE DF cmov 0 splitter): The conditional is VOIDmode.
Index: config/i386/i386.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.542
diff -c -3 -p -r1.542 i386.md
*** config/i386/i386.md	7 Jun 2004 17:21:05 -0000	1.542
--- config/i386/i386.md	16 Jun 2004 14:29:07 -0000
***************
*** 18191,18197 ****
  
  (define_split
    [(set (match_operand:SF 0 "register_operand" "")
! 	(if_then_else (match_operator:SF 1 "comparison_operator"
  			[(match_operand:SF 4 "nonimmediate_operand" "")
  			 (match_operand:SF 5 "nonimmediate_operand" "")])
  		      (match_operand:SF 2 "nonmemory_operand" "")
--- 18191,18197 ----
  
  (define_split
    [(set (match_operand:SF 0 "register_operand" "")
! 	(if_then_else (match_operator 1 "comparison_operator"
  			[(match_operand:SF 4 "nonimmediate_operand" "")
  			 (match_operand:SF 5 "nonimmediate_operand" "")])
  		      (match_operand:SF 2 "nonmemory_operand" "")
***************
*** 18217,18235 ****
    if (const0_operand (operands[2], GET_MODE (operands[2])))
      {
        operands[7] = operands[3];
!       operands[6] = gen_rtx_NOT (V4SFmode, operands[5]);
      }
    else
      {
        operands[7] = operands[2];
!       operands[6] = operands[0];
      }
    operands[7] = simplify_gen_subreg (V4SFmode, operands[7], SFmode, 0);
  })
  
  (define_split
    [(set (match_operand:DF 0 "register_operand" "")
! 	(if_then_else (match_operator:DF 1 "comparison_operator"
  			[(match_operand:DF 4 "nonimmediate_operand" "")
  			 (match_operand:DF 5 "nonimmediate_operand" "")])
  		      (match_operand:DF 2 "nonmemory_operand" "")
--- 18217,18235 ----
    if (const0_operand (operands[2], GET_MODE (operands[2])))
      {
        operands[7] = operands[3];
!       operands[6] = gen_rtx_NOT (V4SFmode, operands[8]);
      }
    else
      {
        operands[7] = operands[2];
!       operands[6] = operands[8];
      }
    operands[7] = simplify_gen_subreg (V4SFmode, operands[7], SFmode, 0);
  })
  
  (define_split
    [(set (match_operand:DF 0 "register_operand" "")
! 	(if_then_else (match_operator 1 "comparison_operator"
  			[(match_operand:DF 4 "nonimmediate_operand" "")
  			 (match_operand:DF 5 "nonimmediate_operand" "")])
  		      (match_operand:DF 2 "nonmemory_operand" "")


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]