https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113035

Jovan Vukic <jovan.vu...@rt-rk.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jovan.vu...@rt-rk.com

--- Comment #5 from Jovan Vukic <jovan.vu...@rt-rk.com> ---
Since we have many zicond tests failing here for the sifive-7-series
(currently 275 FAILs), I analyzed the issue this week. 

In short, in the function riscv_expand_conditional_move (from riscv.cc), 
the SFB is always preferred when both TARGET_SFB_ALU and 
TARGET_ZICOND_LIKE are set to 1.

During the meeting this week, it was clarified to me that we generally steer 
towards zicond. A simple change in the riscv_expand_conditional_move function
could help us achieve this here too and eliminate 120 FAILs.

-      if (TARGET_SFB_ALU || TARGET_XTHEADCONDMOV)
+      if ((TARGET_SFB_ALU || TARGET_XTHEADCONDMOV)
+          && (!TARGET_ZICOND_LIKE || (code != EQ && code != NE)))

However, it was also noted that zicond + SFB cases are not currently 
that relevant. So, even though I initially thought about turning this into
a patch, I assume it's better to leave this here as an observation.

Reply via email to