This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PR 15433
- From: Jan Hubicka <jh at suse dot cz>
- To: gcc-patches at gcc dot gnu dot org, rth at redhat dot com
- Date: Wed, 16 Jun 2004 22:17:07 +0200
- Subject: 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" "")