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