[Bug target/89750] Wrong code for _mm_comi_round_ss

hjl.tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Mon Mar 18 05:35:00 GMT 2019


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

--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> ---
ix86_expand_sse_comi_round has

  /* See avxintrin.h for values.  */
  enum rtx_code comi_comparisons[32] =
    {
      UNEQ, GT, GE, UNORDERED, LTGT, UNLE, UNLT, ORDERED, UNEQ, UNLT,
      UNLE, LT, LTGT, GE, GT, LT, UNEQ, GT, GE, UNORDERED, LTGT, UNLE,
      UNLT, ORDERED, UNEQ, UNLT, UNLE, LT, LTGT, GE, GT, LT
    };

which looks wrong for

#define _CMP_EQ_OQ      0x00
#define _CMP_LT_OS      0x01
#define _CMP_LE_OS      0x02
#define _CMP_UNORD_Q    0x03
#define _CMP_NEQ_UQ     0x04
#define _CMP_NLT_US     0x05
#define _CMP_NLE_US     0x06
#define _CMP_ORD_Q      0x07
#define _CMP_EQ_UQ      0x08
#define _CMP_NGE_US     0x09
#define _CMP_NGT_US     0x0a
#define _CMP_FALSE_OQ   0x0b
#define _CMP_NEQ_OQ     0x0c
#define _CMP_GE_OS      0x0d
#define _CMP_GT_OS      0x0e
#define _CMP_TRUE_UQ    0x0f
#define _CMP_EQ_OS      0x10
#define _CMP_LT_OQ      0x11
#define _CMP_LE_OQ      0x12
#define _CMP_UNORD_S    0x13
#define _CMP_NEQ_US     0x14
#define _CMP_NLT_UQ     0x15
#define _CMP_NLE_UQ     0x16
#define _CMP_ORD_S      0x17
#define _CMP_EQ_US      0x18
#define _CMP_NGE_UQ     0x19
#define _CMP_NGT_UQ     0x1a
#define _CMP_FALSE_OS   0x1b
#define _CMP_NEQ_OS     0x1c
#define _CMP_GE_OQ      0x1d
#define _CMP_GT_OQ      0x1e
#define _CMP_TRUE_US    0x1f


More information about the Gcc-bugs mailing list