(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
fixed-point/
allop.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-std=gnu99" } */
       3  
       4  /* N1169 6.5.7 - Bitwise shift operands.
       5     C99 6.5.3 Unary operators.
       6     C99 6.5.5 Multiplicative operators.
       7     C99 6.5.6 Additive operators.
       8     C99 6.5.7 Bitwise shift operators.
       9     C99 6.5.8 Relational operators.
      10     C99 6.5.9 Equality operators.
      11     C99 6.5.16 Assignment operators.
      12  
      13     Check if all operations are ok.  */
      14  
      15  void true();
      16  void false();
      17  
      18  #define ALLOP(TYPE,NAME) \
      19    TYPE test1 ## NAME (TYPE a)  { return +a; } \
      20    TYPE test2 ## NAME (TYPE a)  { return -a; } \
      21    int test3 ## NAME (TYPE a)  { return !a; } \
      22    TYPE test4 ## NAME (TYPE a, TYPE b) { return a + b; } \
      23    TYPE test5 ## NAME (TYPE a, TYPE b) { return a - b; } \
      24    TYPE test6 ## NAME (TYPE a, TYPE b) { return a * b; } \
      25    TYPE test7 ## NAME (TYPE a, TYPE b) { return a / b; } \
      26    TYPE test8 ## NAME (TYPE a, TYPE b) { a += b; return a; } \
      27    TYPE test9 ## NAME (TYPE a, TYPE b) { a -= b; return a; } \
      28    TYPE test10 ## NAME (TYPE a, TYPE b) { a *= b; return a; } \
      29    TYPE test11 ## NAME (TYPE a, TYPE b) { a /= b; return a; } \
      30    TYPE test12 ## NAME (TYPE a, int b) { return a << b; } \
      31    TYPE test13 ## NAME (TYPE a, int b) { return a >> b; } \
      32    TYPE test14 ## NAME (TYPE a, int b) { a <<= b; return a; } \
      33    TYPE test15 ## NAME (TYPE a, int b) { a >>= b; return a; } \
      34    int test16 ## NAME (TYPE a, TYPE b) { return a == b; } \
      35    int test17 ## NAME (TYPE a, TYPE b) { return a != b; } \
      36    int test18 ## NAME (TYPE a, TYPE b) { return a < b; } \
      37    int test19 ## NAME (TYPE a, TYPE b) { return a <= b; } \
      38    int test20 ## NAME (TYPE a, TYPE b) { return a >= b; } \
      39    int test21 ## NAME (TYPE a, TYPE b) { return a > b; } \
      40    void test22 ## NAME (TYPE a, TYPE b) { if(a == b)true(); else false(); } \
      41    void test23 ## NAME (TYPE a, TYPE b) { if(a != b)true(); else false(); } \
      42    void test24 ## NAME (TYPE a, TYPE b) { if(a < b)true(); else false(); } \
      43    void test25 ## NAME (TYPE a, TYPE b) { if(a <= b)true(); else false(); } \
      44    void test26 ## NAME (TYPE a, TYPE b) { if(a >= b)true(); else false(); } \
      45    void test27 ## NAME (TYPE a, TYPE b) { if(a > b)true(); else false(); } \
      46    TYPE test28 ## NAME (TYPE a) { return ++a; } \
      47    TYPE test29 ## NAME (TYPE a) { return --a; } \
      48    TYPE test30 ## NAME (TYPE *a) { return ++(*a); } \
      49    TYPE test31 ## NAME (TYPE *a) { return (*a)++; } \
      50    TYPE test32 ## NAME (TYPE *a) { return --(*a); } \
      51    TYPE test33 ## NAME (TYPE *a) { return (*a)--; }
      52  
      53  ALLOP(short _Fract, sf);
      54  ALLOP(_Fract, f);
      55  ALLOP(long _Fract, lf);
      56  ALLOP(long long _Fract, llf);
      57  ALLOP(short _Accum, sa);
      58  ALLOP(_Accum, a);
      59  ALLOP(long _Accum, la);
      60  ALLOP(long long _Accum, lla);
      61  
      62  ALLOP(unsigned short _Fract, usf);
      63  ALLOP(unsigned _Fract, uf);
      64  ALLOP(unsigned long _Fract, ulf);
      65  ALLOP(unsigned long long _Fract, ullf);
      66  ALLOP(unsigned short _Accum, usa);
      67  ALLOP(unsigned _Accum, ua);
      68  ALLOP(unsigned long _Accum, ula);
      69  ALLOP(unsigned long long _Accum, ulla);
      70  
      71  ALLOP(_Sat short _Fract, Ssf);
      72  ALLOP(_Sat _Fract, Sf);
      73  ALLOP(_Sat long _Fract, Slf);
      74  ALLOP(_Sat long long _Fract, Sllf);
      75  ALLOP(_Sat short _Accum, Ssa);
      76  ALLOP(_Sat _Accum, Sa);
      77  ALLOP(_Sat long _Accum, Sla);
      78  ALLOP(_Sat long long _Accum, Slla);
      79  
      80  ALLOP(_Sat unsigned short _Fract, Susf);
      81  ALLOP(_Sat unsigned  _Fract, Suf);
      82  ALLOP(_Sat unsigned long _Fract, Sulf);
      83  ALLOP(_Sat unsigned long long _Fract, Sullf);
      84  ALLOP(_Sat unsigned short _Accum, Susa);
      85  ALLOP(_Sat unsigned  _Accum, Sua);
      86  ALLOP(_Sat unsigned long _Accum, Sula);
      87  ALLOP(_Sat unsigned long long _Accum, Sulla);