(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
arm/
cmp-2.c
       1  /* { dg-do compile } */
       2  /* { dg-require-effective-target arm_fp_ok } */
       3  /* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
       4  /* { dg-options "-O" } */
       5  /* { dg-add-options arm_fp } */
       6  /* { dg-final { scan-assembler-not "\tbl\t" } } */
       7  /* { dg-final { scan-assembler-not "__aeabi" } } */
       8  int x, y;
       9  
      10  #define EQ(X, Y) ((X) == (Y))
      11  #define NE(X, Y) ((X) != (Y))
      12  #define LT(X, Y) ((X) < (Y))
      13  #define GT(X, Y) ((X) > (Y))
      14  #define LE(X, Y) ((X) <= (Y))
      15  #define GE(X, Y) ((X) >= (Y))
      16  
      17  #define TEST_EXPR(NAME, ARGS, EXPR)			\
      18    int NAME##1 ARGS { return (EXPR); }			\
      19    int NAME##2 ARGS { return !(EXPR); }			\
      20    int NAME##3 ARGS { return (EXPR) ? x : y; }		\
      21    void NAME##4 ARGS { if (EXPR) x++; }			\
      22    void NAME##5 ARGS { if (!(EXPR)) x++; }
      23  
      24  #define TEST(NAME, TYPE, OPERATOR) \
      25    TEST_EXPR (NAME##_rr, (TYPE a1, TYPE a2), OPERATOR (a1, a2))		\
      26    TEST_EXPR (NAME##_rm, (TYPE a1, TYPE *a2), OPERATOR (a1, *a2))	\
      27    TEST_EXPR (NAME##_mr, (TYPE *a1, TYPE a2), OPERATOR (*a1, a2))	\
      28    TEST_EXPR (NAME##_mm, (TYPE *a1, TYPE *a2), OPERATOR (*a1, *a2))	\
      29    TEST_EXPR (NAME##_rc, (TYPE a1), OPERATOR (a1, 100))			\
      30    TEST_EXPR (NAME##_cr, (TYPE a1), OPERATOR (100, a1))
      31  
      32  #define TEST_OP(NAME, OPERATOR) \
      33    TEST (f_##NAME, float, OPERATOR)
      34  
      35  TEST_OP (eq, EQ)
      36  TEST_OP (ne, NE)
      37  TEST_OP (lt, LT)
      38  TEST_OP (gt, GT)
      39  TEST_OP (le, LE)
      40  TEST_OP (ge, GE)
      41  TEST_OP (blt, __builtin_isless)
      42  TEST_OP (bgt, __builtin_isgreater)
      43  TEST_OP (ble, __builtin_islessequal)
      44  TEST_OP (bge, __builtin_isgreaterequal)
      45  /* This one should be expanded into separate ordered and equality
      46     comparisons.  */
      47  TEST_OP (blg, __builtin_islessgreater)
      48  TEST_OP (bun, __builtin_isunordered)