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

            Bug ID: 92097
           Summary: instrutions only vaild under TARGET_AVX
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: crazylht at gmail dot com
                CC: hjl.tools at gmail dot com, uros at gcc dot gnu.org
  Target Milestone: ---
            Target: i386, x86-64

According to intel sdm, "sqrtss" is under TARGET_SSE, "vsqrtss" is under
TARGET_AVX, so define_insn *rsqrtsf2_sse should be under TARGET_AVX but it is
TARGET_SSE now, is it on purpose?

-----
(define_insn "*rsqrtsf2_sse"                                                    
  [(set (match_operand:SF 0 "register_operand" "=x,x,x")                        
        (unspec:SF [(match_operand:SF 1 "nonimmediate_operand" "0,x,m")]        
                   UNSPEC_RSQRT))]                                              
  "TARGET_SSE && TARGET_SSE_MATH"                                               
  "@                                                                            
   %vrsqrtss\t{%d1, %0|%0, %d1}                                                 
   %vrsqrtss\t{%d1, %0|%0, %d1}                                                 
   %vrsqrtss\t{%1, %d0|%d0, %1}"                                                
  [(set_attr "type" "sse")                                                      
   (set_attr "atom_sse_attr" "rcp")                                             
   (set_attr "btver2_sse_attr" "rcp")                                           
   (set_attr "prefix" "maybe_vex")                                              
   (set_attr "mode" "SF")                                                       
   (set (attr "preferred_for_speed")                                            
     (cond [(eq_attr "alternative" "1")                                         
              (symbol_ref "TARGET_AVX || !TARGET_SSE_PARTIAL_REG_DEPENDENCY")   
           (eq_attr "alternative" "2")                                          
              (symbol_ref "!TARGET_SSE_PARTIAL_REG_DEPENDENCY")                 
           ]                                                                    
           (symbol_ref "true")))])
-----


also for *sqrt<mode>2_sse,*rcpsf2_sse

Similar for sse4_1_round<mode>2

Reply via email to