RISC-V: Also allow FP conditions in `riscv_expand_conditional_move'
In `riscv_expand_conditional_move' we only let integer conditions through at the moment, even though code has already been prepared to handle floating-point conditions as well. Lift this restriction and only bail out if a non-word-mode integer condition has been requested, as we cannot handle this specific case owing to machine instruction set restriction. We already take care of the non-integer, non-floating-point case later on. gcc/ * config/riscv/riscv.cc (riscv_expand_conditional_move): Don't bail out in floating-point conditions.
This commit is contained in:
parent
7e126d8d0f
commit
37ff43c273
1 changed files with 4 additions and 4 deletions
|
@ -4138,12 +4138,12 @@ riscv_expand_conditional_move (rtx dest, rtx op, rtx cons, rtx alt)
|
|||
machine_mode mode0 = GET_MODE (op0);
|
||||
machine_mode mode1 = GET_MODE (op1);
|
||||
|
||||
/* The comparison must be comparing WORD_MODE objects. We must
|
||||
enforce that so that we don't strip away a sign_extension
|
||||
/* An integer comparison must be comparing WORD_MODE objects. We
|
||||
must enforce that so that we don't strip away a sign_extension
|
||||
thinking it is unnecessary. We might consider using
|
||||
riscv_extend_operands if they are not already properly extended. */
|
||||
if ((mode0 != word_mode && mode0 != VOIDmode)
|
||||
|| (mode1 != word_mode && mode1 != VOIDmode))
|
||||
if ((INTEGRAL_MODE_P (mode0) && mode0 != word_mode)
|
||||
|| (INTEGRAL_MODE_P (mode1) && mode1 != word_mode))
|
||||
return false;
|
||||
|
||||
/* In the fallback generic case use MODE rather than WORD_MODE for
|
||||
|
|
Loading…
Add table
Reference in a new issue