[Bug target/98612] _mm_comieq_sd has wrong semantics

crazylht at gmail dot com gcc-bugzilla@gcc.gnu.org
Mon Jan 11 06:45:00 GMT 2021


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

--- Comment #3 from Hongtao.liu <crazylht at gmail dot com> ---
Also found some dead code in ix86_expand_sse_comi which is called by
   if (fcode >= IX86_BUILTIN__BDESC_COMI_FIRST
      && fcode <= IX86_BUILTIN__BDESC_COMI_LAST)
where all builtins are defined with flags as 0.


2 files changed, 9 deletions(-)
gcc/config/i386/i386-builtins.h | 4 ----
gcc/config/i386/i386-expand.c   | 5 -----

modified   gcc/config/i386/i386-builtins.h
@@ -236,10 +236,6 @@ struct builtin_isa {

 /* Bits for builtin_description.flag.  */

-/* Set when we don't support the comparison natively, and should
-   swap_comparison in order to support it.  */
-#define BUILTIN_DESC_SWAP_OPERANDS     1
-
 struct builtin_description
 {
   const HOST_WIDE_INT mask;
modified   gcc/config/i386/i386-expand.c
@@ -8634,11 +8634,6 @@ ix86_expand_sse_comi (const struct builtin_description
*d, tree exp,
   if (VECTOR_MODE_P (mode1))
     op1 = safe_vector_operand (op1, mode1);

-  /* Swap operands if we have a comparison that isn't available in
-     hardware.  */
-  if (d->flag & BUILTIN_DESC_SWAP_OPERANDS)
-    std::swap (op0, op1);
-
   target = gen_reg_rtx (SImode);
   emit_move_insn (target, const0_rtx);
   target = gen_rtx_SUBREG (QImode, target, 0);

[back]


More information about the Gcc-bugs mailing list