On Fri, 14 Jun 2024, Kong, Lingling wrote:
> APX CFCMOV[1] feature implements conditionally faulting which means that all > memory faults are suppressed > when the condition code evaluates to false and load or store a memory > operand. Now we could load or store a > memory operand may trap or fault for conditional move. > > In middle-end, now we don't support a conditional move if we knew that a load > from A or B could trap or fault. Predicated loads&stores on Itanium don't trap either. They are modeled via COND_EXEC on RTL. The late if-conversion pass (the instance that runs after reload) is capable of introducing them. > To enable CFCMOV, we add a target HOOK TARGET_HAVE_CONDITIONAL_MOVE_MEM_NOTRAP > in if-conversion pass to allow convert to cmov. Considering the above, is the new hook really necessary? Can you model the new instructions via (cond_exec () (set ...)) instead of (set (if_then_else ...)) ? Alexander