Use ix86_fp_comparison_operator in cbranchbf4 to avoid ICE.
*jcc only supports ix86_fp_comparison_operator for CCFP, when comparison code is LT, there's an ICE. W/o AVX10.2, it's ok since do_compare_rtx_and_jump will transform LT to GT, but w/ AVX10.2 it goes directly into ix86_expand_branch which doesn't handle it. Use ix86_fp_comparison_operator in cbranchbf4. gcc/ChangeLog: PR target/117452 * config/i386/i386.md (cbranchbf4): Use ix86_fp_comparison_operator instead of comparison_operator. gcc/testsuite/ChangeLog: * gcc.target/i386/pr117452.c: New test.
This commit is contained in:
parent
c3a211c932
commit
62a6cafd7f
2 changed files with 13 additions and 1 deletions
|
@ -1812,7 +1812,7 @@
|
|||
(compare:CC (match_operand:BF 1 "cmp_fp_expander_operand")
|
||||
(match_operand:BF 2 "cmp_fp_expander_operand")))
|
||||
(set (pc) (if_then_else
|
||||
(match_operator 0 "comparison_operator"
|
||||
(match_operator 0 "ix86_fp_comparison_operator"
|
||||
[(reg:CC FLAGS_REG)
|
||||
(const_int 0)])
|
||||
(label_ref (match_operand 3))
|
||||
|
|
12
gcc/testsuite/gcc.target/i386/pr117452.c
Normal file
12
gcc/testsuite/gcc.target/i386/pr117452.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-march=x86-64-v3 -mavx10.2 -Ofast" } */
|
||||
|
||||
__bf16 b;
|
||||
int x;
|
||||
|
||||
void
|
||||
foo ()
|
||||
{
|
||||
if (x < b)
|
||||
x = 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue