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

Hongtao Liu <liuhongt at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |liuhongt at gcc dot gnu.org

--- Comment #5 from Hongtao Liu <liuhongt at gcc dot gnu.org> ---
 gcc/doc/generic.texi:1629-1641 — the UNLT_EXPR / UNLE_EXPR / UNGT_EXPR /
UNGE_EXPR / UNEQ_EXPR entry:                                                    

These nodes represent the unordered comparison operators. […] For example,
UNLT_EXPR returns true if either operand is an IEEE NaN or the first operand is
less than the second. **All these operations are guaranteed not to generate a
floating point exception.**

Assume rtx unge should be same as UNGE_EXPR, but ix86_print_operand generate
nlt for unge, it should be nlt_uq.

4499             /* FALLTHRU */                        
4500            case UNGE:                             
4501              fputs ("nlt", file);                 
4502              break;                               
4503            case GT:                               
4504              if (TARGET_AVX)                      
4505                {                                  
4506                  fputs ("gt", file);              
4507                  break;                           
4508                }                                  
4509             /* FALLTHRU */                        
4510            case UNGT:                             
4511              fputs ("nle", file);                 
4512              break;                               
4513            case ORDERED:                          
4514              fputs ("ord", file);                 
4515              break;                               
4516            default:                               


pre-avx x86 doesn't support nlt_uq, it means below operator may need to be
adjusted by swaping unge qith ge, ungt with gt?

1561(define_predicate "sse_comparison_operator"                    
1562  (ior (match_code "eq,ne,lt,le,unordered,unge,ungt,ordered")  
1563       (and (match_test "TARGET_AVX")                          
1564            (match_code "ge,gt,uneq,unle,unlt,ltgt"))))

Reply via email to