https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92845
--- Comment #1 from Claudiu Zissulescu <claziss at gmail dot com> ---
Although the FDCMP (the double precision floating point compare instruction) is
added to the compiler, it is not properly used via cstoredi pattern.
A patch can be this one:
index b592f25afce..bd44030b409 100644
--- a/gcc/config/arc/arc.md
+++ b/gcc/config/arc/arc.md
@@ -3749,7 +3749,7 @@ archs4x, archs4xd"
})
(define_mode_iterator SDF [(SF "TARGET_FP_SP_BASE || TARGET_OPTFPE")
- (DF "TARGET_OPTFPE")])
+ (DF "TARGET_FP_DP_BASE || TARGET_OPTFPE")])
(define_expand "cstore<mode>4"
[(set (reg:CC CC_REG)
@@ -3759,7 +3759,7 @@ archs4x, archs4xd"
(match_operator:SI 1 "comparison_operator" [(reg CC_REG)
(const_int 0)]))]
- "TARGET_FP_SP_BASE || TARGET_OPTFPE"
+ "TARGET_HARD_FLOAT || TARGET_OPTFPE"
{
gcc_assert (XEXP (operands[1], 0) == operands[2]);
gcc_assert (XEXP (operands[1], 1) == operands[3]);