(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
fixed-point/
allop-const.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 on constants are ok.  */
      14  
      15  #define ALLOPCONST(TYPE,NAME,POSTFIX) \
      16  	TYPE NAME ## plus = +0.1 ## POSTFIX; \
      17  	unsigned TYPE NAME ## u_plus = +0.1u ## POSTFIX; \
      18  	_Sat TYPE NAME ## sat_plus = +(_Sat TYPE)0.1 ## POSTFIX; \
      19  	_Sat unsigned TYPE NAME ## sat_u_plus = +(_Sat unsigned TYPE)0.1u ## POSTFIX; \
      20  	TYPE NAME ## neg = -0.1 ## POSTFIX; \
      21  	_Sat TYPE NAME ## sat_neg = -(_Sat TYPE)0.1 ## POSTFIX; \
      22  	_Sat unsigned TYPE NAME ## sat_u_neg = -(_Sat unsigned TYPE)0.1u ## POSTFIX; \
      23  	int NAME ## logneg1 = !0.1 ## POSTFIX; \
      24  	int NAME ## logneg1u = !0.1u ## POSTFIX; \
      25  	int NAME ## logneg2 = !0.0 ## POSTFIX; \
      26  	int NAME ## logneg2u = !0.0u ## POSTFIX; \
      27  	TYPE NAME ## add = 0.1 ## POSTFIX + 0.2 ## POSTFIX; \
      28  	unsigned TYPE NAME ## u_add = 0.1u ## POSTFIX + 0.2u ## POSTFIX; \
      29  	_Sat TYPE NAME ## sat_add = (_Sat TYPE)0.8 ## POSTFIX + 0.3 ## POSTFIX; \
      30  	_Sat unsigned TYPE NAME ## sat_u_add = (_Sat unsigned TYPE)0.8u ## POSTFIX + 0.3u ## POSTFIX; \
      31  	TYPE NAME ## sub = 0.1 ## POSTFIX - 0.2 ## POSTFIX; \
      32  	unsigned TYPE NAME ## u_sub = 0.2u ## POSTFIX - 0.1u ## POSTFIX; \
      33  	_Sat TYPE NAME ## sat_sub = (_Sat TYPE)0.1 ## POSTFIX - 0.2 ## POSTFIX; \
      34  	_Sat unsigned TYPE NAME ## sat_u_sub = (_Sat unsigned TYPE)0.1u ## POSTFIX - 0.2u ## POSTFIX; \
      35  	TYPE NAME ## mul = 0.1 ## POSTFIX * 0.2 ## POSTFIX; \
      36  	unsigned TYPE NAME ## u_mul = 0.1u ## POSTFIX * 0.2u ## POSTFIX; \
      37  	_Sat TYPE NAME ## sat_mul = (_Sat TYPE)0.1 ## POSTFIX * 0.2 ## POSTFIX; \
      38  	_Sat unsigned TYPE NAME ## sat_u_mul = (_Sat unsigned TYPE)0.1u ## POSTFIX * 0.2u ## POSTFIX; \
      39  	TYPE NAME ## div = 0.1 ## POSTFIX / 0.3 ## POSTFIX; \
      40  	unsigned TYPE NAME ## u_div = 0.1u ## POSTFIX / 0.3u ## POSTFIX; \
      41  	_Sat TYPE NAME ## sat_div = (_Sat TYPE)0.3 ## POSTFIX / 0.1 ## POSTFIX; \
      42  	_Sat unsigned TYPE NAME ## sat_u_div = (_Sat unsigned TYPE)0.3u ## POSTFIX / 0.1u ## POSTFIX; \
      43  	TYPE NAME ## shl = 0.1 ## POSTFIX << 3; \
      44  	unsigned TYPE NAME ## u_shl = 0.1u ## POSTFIX << 3; \
      45  	_Sat TYPE NAME ## sat_shl = (_Sat TYPE)0.8 ## POSTFIX << 3; \
      46  	_Sat unsigned TYPE NAME ## sat_u_shl = (_Sat unsigned TYPE)0.8u ## POSTFIX << 3; \
      47  	TYPE NAME ## shr = 0.1 ## POSTFIX >> 5; \
      48  	unsigned TYPE NAME ## u_shr = 0.1u ## POSTFIX >> 5; \
      49  	_Sat TYPE NAME ## sat_shr = (_Sat TYPE)0.1 ## POSTFIX >> 5; \
      50  	_Sat unsigned TYPE NAME ## sat_u_shr = (_Sat unsigned TYPE)0.1 ## POSTFIX >> 5; \
      51  	int NAME ## ne = 0.1 ## POSTFIX != 0.2 ## POSTFIX; \
      52  	int NAME ## u_ne = 0.1u ## POSTFIX != 0.2u ## POSTFIX; \
      53  	int NAME ## eq = 0.1 ## POSTFIX == 0.2 ## POSTFIX; \
      54  	int NAME ## u_eq = 0.1u ## POSTFIX == 0.2u ## POSTFIX; \
      55  	int NAME ## gt = 0.1 ## POSTFIX > 0.2 ## POSTFIX; \
      56  	int NAME ## u_gt = 0.1u ## POSTFIX > 0.2u ## POSTFIX; \
      57  	int NAME ## ge = 0.1 ## POSTFIX >= 0.2 ## POSTFIX; \
      58  	int NAME ## u_ge = 0.1u ## POSTFIX >= 0.2 ## POSTFIX; \
      59  	int NAME ## lt = 0.1 ## POSTFIX < 0.2 ## POSTFIX; \
      60  	int NAME ## u_lt = 0.1u ## POSTFIX < 0.2 ## POSTFIX; \
      61  	int NAME ## le = 0.1 ## POSTFIX <= 0.2 ## POSTFIX; \
      62  	int NAME ## u_le = 0.1u ## POSTFIX <= 0.2 ## POSTFIX; \
      63  	int NAME ## ne2 = 0.2 ## POSTFIX != 0.2 ## POSTFIX; \
      64  	int NAME ## u_ne2 = 0.2u ## POSTFIX != 0.2u ## POSTFIX; \
      65  	int NAME ## eq2 = 0.2 ## POSTFIX == 0.2 ## POSTFIX; \
      66  	int NAME ## u_eq2 = 0.2u ## POSTFIX == 0.2u ## POSTFIX; \
      67  	int NAME ## gt2 = 0.2 ## POSTFIX > 0.2 ## POSTFIX; \
      68  	int NAME ## u_gt2 = 0.2u ## POSTFIX > 0.2u ## POSTFIX; \
      69  	int NAME ## ge2 = 0.2 ## POSTFIX >= 0.2 ## POSTFIX; \
      70  	int NAME ## u_ge2 = 0.2u ## POSTFIX >= 0.2 ## POSTFIX; \
      71  	int NAME ## lt2 = 0.2 ## POSTFIX < 0.2 ## POSTFIX; \
      72  	int NAME ## u_lt2 = 0.2u ## POSTFIX < 0.2 ## POSTFIX; \
      73  	int NAME ## le2 = 0.2 ## POSTFIX <= 0.2 ## POSTFIX; \
      74  	int NAME ## u_le2 = 0.2u ## POSTFIX <= 0.2 ## POSTFIX; \
      75  	TYPE NAME ## hr_signed = 0.1hr; \
      76  	unsigned TYPE NAME ## hr_unsigned = 0.1hr; \
      77  	_Sat TYPE NAME ## hr_sat_signed = 0.1hr; \
      78  	_Sat unsigned TYPE NAME ## hr_sat_unsigned = 0.1hr; \
      79  	TYPE NAME ## r_signed = 0.1r; \
      80  	unsigned TYPE NAME ## r_unsigned = 0.1r; \
      81  	_Sat TYPE NAME ## r_sat_signed = 0.1r; \
      82  	_Sat unsigned TYPE NAME ## r_sat_unsigned = 0.1r; \
      83  	TYPE NAME ## lr_signed = 0.1lr; \
      84  	unsigned TYPE NAME ## lr_unsigned = 0.1lr; \
      85  	_Sat TYPE NAME ## lr_sat_signed = 0.1lr; \
      86  	_Sat unsigned TYPE NAME ## lr_sat_unsigned = 0.1lr; \
      87  	TYPE NAME ## llr_signed = 0.1llr; \
      88  	unsigned TYPE NAME ## llr_unsigned = 0.1llr; \
      89  	_Sat TYPE NAME ## llr_sat_signed = 0.1llr; \
      90  	_Sat unsigned TYPE NAME ## llr_sat_unsigned = 0.1llr; \
      91  	TYPE NAME ## uhr_signed = 0.1uhr; \
      92  	unsigned TYPE NAME ## uhr_unsigned = 0.1uhr; \
      93  	_Sat TYPE NAME ## uhr_sat_signed = 0.1uhr; \
      94  	_Sat unsigned TYPE NAME ## uhr_sat_unsigned = 0.1uhr; \
      95  	TYPE NAME ## ur_signed = 0.1ur; \
      96  	unsigned TYPE NAME ## ur_unsigned = 0.1ur; \
      97  	_Sat TYPE NAME ## ur_sat_signed = 0.1ur; \
      98  	_Sat unsigned TYPE NAME ## ur_sat_unsigned = 0.1ur; \
      99  	TYPE NAME ## ulr_signed = 0.1ulr; \
     100  	unsigned TYPE NAME ## ulr_unsigned = 0.1ulr; \
     101  	_Sat TYPE NAME ## ulr_sat_signed = 0.1ulr; \
     102  	_Sat unsigned TYPE NAME ## ulr_sat_unsigned = 0.1ulr; \
     103  	TYPE NAME ## ullr_signed = 0.1ullr; \
     104  	unsigned TYPE NAME ## ullr_unsigned = 0.1ullr; \
     105  	_Sat TYPE NAME ## ullr_sat_signed = 0.1ullr; \
     106  	_Sat unsigned TYPE NAME ## ullr_sat_unsigned = 0.1ullr; \
     107  	TYPE NAME ## hk_signed = 0.1hk; \
     108  	unsigned TYPE NAME ## hk_unsigned = 0.1hk; \
     109  	_Sat TYPE NAME ## hk_sat_signed = 5.1hk; \
     110  	_Sat unsigned TYPE NAME ## hk_sat_unsigned = 5.1hk; \
     111  	TYPE NAME ## k_signed = 0.1k; \
     112  	unsigned TYPE NAME ## k_unsigned = 0.1k; \
     113  	_Sat TYPE NAME ## k_sat_signed = 5.1k; \
     114  	_Sat unsigned TYPE NAME ## k_sat_unsigned = 5.1k; \
     115  	TYPE NAME ## lk_signed = 0.1lk; \
     116  	unsigned TYPE NAME ## lk_unsigned = 0.1lk; \
     117  	_Sat TYPE NAME ## lk_sat_signed = 5.1lk; \
     118  	_Sat unsigned TYPE NAME ## lk_sat_unsigned = 5.1lk; \
     119  	TYPE NAME ## llk_signed = 0.1llk; \
     120  	unsigned TYPE NAME ## llk_unsigned = 0.1llk; \
     121  	_Sat TYPE NAME ## llk_sat_signed = 5.1llk; \
     122  	_Sat unsigned TYPE NAME ## llk_sat_unsigned = 5.1llk; \
     123  	TYPE NAME ## uhk_signed = 0.1uhk; \
     124  	unsigned TYPE NAME ## uhk_unsigned = 0.1uhk; \
     125  	_Sat TYPE NAME ## uhk_sat_signed = 5.1uhk; \
     126  	_Sat unsigned TYPE NAME ## uhk_sat_unsigned = 5.1uhk; \
     127  	TYPE NAME ## uk_signed = 0.1uk; \
     128  	unsigned TYPE NAME ## uk_unsigned = 0.1uk; \
     129  	_Sat TYPE NAME ## uk_sat_signed = 5.1uk; \
     130  	_Sat unsigned TYPE NAME ## uk_sat_unsigned = 5.1uk; \
     131  	TYPE NAME ## ulk_signed = 0.1ulk; \
     132  	unsigned TYPE NAME ## ulk_unsigned = 0.1ulk; \
     133  	_Sat TYPE NAME ## ulk_sat_signed = 5.1ulk; \
     134  	_Sat unsigned TYPE NAME ## ulk_sat_unsigned = 5.1ulk; \
     135  	TYPE NAME ## ullk_signed = 0.1ullk; \
     136  	unsigned TYPE NAME ## ullk_unsigned = 0.1ullk; \
     137  	_Sat TYPE NAME ## ullk_sat_signed = 5.1ullk; \
     138  	_Sat unsigned TYPE NAME ## ullk_sat_unsigned = 5.1ullk; \
     139  
     140  ALLOPCONST(short _Fract, sf, hr);
     141  ALLOPCONST(_Fract, f, r);
     142  ALLOPCONST(long _Fract, lf, lr);
     143  ALLOPCONST(long long _Fract, llf, llr);
     144  ALLOPCONST(short _Accum, sa, hk);
     145  ALLOPCONST(_Accum, a, k);
     146  ALLOPCONST(long _Accum, la, lk);
     147  ALLOPCONST(long long _Accum, lla, llk);