1  /* { dg-require-effective-target int32plus } */
       2  /* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
       3  
       4  #define type double
       5  
       6  type glob0, glob1;
       7  
       8  #define E0 ((type *)10000000)
       9  #define reg0 r0
      10  #define indreg0 (*p0)
      11  #define imm0 22
      12  #define limm0 ((type)((int)&glob0))
      13  #define adr0 (*E0)
      14  #define adrreg0 (p0[10000000])
      15  #define adrx0 (E0[x0])
      16  #define regx0 (p0[x0])
      17  
      18  #define E1 ((type *)(11111111 & ~(__alignof__ (type) - 1)))
      19  #define reg1 r1
      20  #define indreg1 (*p1)
      21  #define imm1 33
      22  #define limm1 ((type)((int)&glob1))
      23  #define adr1 (*E1)
      24  #define adrreg1 (p1[1111111/4])
      25  #define adrx1 (E1[x1])
      26  #define regx1 (p1[x1])
      27  
      28  reg0reg1 (r0, r1, x0, x1, p0, p1)
      29  type r0, r1;  type *p0, *p1;
      30  {if (reg0 <= reg1) return 1; else return 0;}
      31  
      32  reg0indreg1 (r0, r1, x0, x1, p0, p1)
      33  type r0, r1;  type *p0, *p1;
      34  {if (reg0 <= indreg1) return 1; else return 0;}
      35  
      36  reg0imm1 (r0, r1, x0, x1, p0, p1)
      37  type r0, r1;  type *p0, *p1;
      38  {if (reg0 <= imm1) return 1; else return 0;}
      39  
      40  reg0limm1 (r0, r1, x0, x1, p0, p1)
      41  type r0, r1;  type *p0, *p1;
      42  {if (reg0 <= limm1) return 1; else return 0;}
      43  
      44  reg0adr1 (r0, r1, x0, x1, p0, p1)
      45  type r0, r1;  type *p0, *p1;
      46  {if (reg0 <= adr1) return 1; else return 0;}
      47  
      48  reg0adrreg1 (r0, r1, x0, x1, p0, p1)
      49  type r0, r1;  type *p0, *p1;
      50  {if (reg0 <= adrreg1) return 1; else return 0;}
      51  
      52  reg0adrx1 (r0, r1, x0, x1, p0, p1)
      53  type r0, r1;  type *p0, *p1;
      54  {if (reg0 <= adrx1) return 1; else return 0;}
      55  
      56  reg0regx1 (r0, r1, x0, x1, p0, p1)
      57  type r0, r1;  type *p0, *p1;
      58  {if (reg0 <= regx1) return 1; else return 0;}
      59  
      60  indreg0reg1 (r0, r1, x0, x1, p0, p1)
      61  type r0, r1;  type *p0, *p1;
      62  {if (indreg0 <= reg1) return 1; else return 0;}
      63  
      64  indreg0indreg1 (r0, r1, x0, x1, p0, p1)
      65  type r0, r1;  type *p0, *p1;
      66  {if (indreg0 <= indreg1) return 1; else return 0;}
      67  
      68  indreg0imm1 (r0, r1, x0, x1, p0, p1)
      69  type r0, r1;  type *p0, *p1;
      70  {if (indreg0 <= imm1) return 1; else return 0;}
      71  
      72  indreg0limm1 (r0, r1, x0, x1, p0, p1)
      73  type r0, r1;  type *p0, *p1;
      74  {if (indreg0 <= limm1) return 1; else return 0;}
      75  
      76  indreg0adr1 (r0, r1, x0, x1, p0, p1)
      77  type r0, r1;  type *p0, *p1;
      78  {if (indreg0 <= adr1) return 1; else return 0;}
      79  
      80  indreg0adrreg1 (r0, r1, x0, x1, p0, p1)
      81  type r0, r1;  type *p0, *p1;
      82  {if (indreg0 <= adrreg1) return 1; else return 0;}
      83  
      84  indreg0adrx1 (r0, r1, x0, x1, p0, p1)
      85  type r0, r1;  type *p0, *p1;
      86  {if (indreg0 <= adrx1) return 1; else return 0;}
      87  
      88  indreg0regx1 (r0, r1, x0, x1, p0, p1)
      89  type r0, r1;  type *p0, *p1;
      90  {if (indreg0 <= regx1) return 1; else return 0;}
      91  
      92  imm0reg1 (r0, r1, x0, x1, p0, p1)
      93  type r0, r1;  type *p0, *p1;
      94  {if (imm0 <= reg1) return 1; else return 0;}
      95  
      96  imm0indreg1 (r0, r1, x0, x1, p0, p1)
      97  type r0, r1;  type *p0, *p1;
      98  {if (imm0 <= indreg1) return 1; else return 0;}
      99  
     100  imm0imm1 (r0, r1, x0, x1, p0, p1)
     101  type r0, r1;  type *p0, *p1;
     102  {if (imm0 <= imm1) return 1; else return 0;}
     103  
     104  imm0limm1 (r0, r1, x0, x1, p0, p1)
     105  type r0, r1;  type *p0, *p1;
     106  {if (imm0 <= limm1) return 1; else return 0;}
     107  
     108  imm0adr1 (r0, r1, x0, x1, p0, p1)
     109  type r0, r1;  type *p0, *p1;
     110  {if (imm0 <= adr1) return 1; else return 0;}
     111  
     112  imm0adrreg1 (r0, r1, x0, x1, p0, p1)
     113  type r0, r1;  type *p0, *p1;
     114  {if (imm0 <= adrreg1) return 1; else return 0;}
     115  
     116  imm0adrx1 (r0, r1, x0, x1, p0, p1)
     117  type r0, r1;  type *p0, *p1;
     118  {if (imm0 <= adrx1) return 1; else return 0;}
     119  
     120  imm0regx1 (r0, r1, x0, x1, p0, p1)
     121  type r0, r1;  type *p0, *p1;
     122  {if (imm0 <= regx1) return 1; else return 0;}
     123  
     124  limm0reg1 (r0, r1, x0, x1, p0, p1)
     125  type r0, r1;  type *p0, *p1;
     126  {if (limm0 <= reg1) return 1; else return 0;}
     127  
     128  limm0indreg1 (r0, r1, x0, x1, p0, p1)
     129  type r0, r1;  type *p0, *p1;
     130  {if (limm0 <= indreg1) return 1; else return 0;}
     131  
     132  limm0imm1 (r0, r1, x0, x1, p0, p1)
     133  type r0, r1;  type *p0, *p1;
     134  {if (limm0 <= imm1) return 1; else return 0;}
     135  
     136  limm0limm1 (r0, r1, x0, x1, p0, p1)
     137  type r0, r1;  type *p0, *p1;
     138  {if (limm0 <= limm1) return 1; else return 0;}
     139  
     140  limm0adr1 (r0, r1, x0, x1, p0, p1)
     141  type r0, r1;  type *p0, *p1;
     142  {if (limm0 <= adr1) return 1; else return 0;}
     143  
     144  limm0adrreg1 (r0, r1, x0, x1, p0, p1)
     145  type r0, r1;  type *p0, *p1;
     146  {if (limm0 <= adrreg1) return 1; else return 0;}
     147  
     148  limm0adrx1 (r0, r1, x0, x1, p0, p1)
     149  type r0, r1;  type *p0, *p1;
     150  {if (limm0 <= adrx1) return 1; else return 0;}
     151  
     152  limm0regx1 (r0, r1, x0, x1, p0, p1)
     153  type r0, r1;  type *p0, *p1;
     154  {if (limm0 <= regx1) return 1; else return 0;}
     155  
     156  adr0reg1 (r0, r1, x0, x1, p0, p1)
     157  type r0, r1;  type *p0, *p1;
     158  {if (adr0 <= reg1) return 1; else return 0;}
     159  
     160  adr0indreg1 (r0, r1, x0, x1, p0, p1)
     161  type r0, r1;  type *p0, *p1;
     162  {if (adr0 <= indreg1) return 1; else return 0;}
     163  
     164  adr0imm1 (r0, r1, x0, x1, p0, p1)
     165  type r0, r1;  type *p0, *p1;
     166  {if (adr0 <= imm1) return 1; else return 0;}
     167  
     168  adr0limm1 (r0, r1, x0, x1, p0, p1)
     169  type r0, r1;  type *p0, *p1;
     170  {if (adr0 <= limm1) return 1; else return 0;}
     171  
     172  adr0adr1 (r0, r1, x0, x1, p0, p1)
     173  type r0, r1;  type *p0, *p1;
     174  {if (adr0 <= adr1) return 1; else return 0;}
     175  
     176  adr0adrreg1 (r0, r1, x0, x1, p0, p1)
     177  type r0, r1;  type *p0, *p1;
     178  {if (adr0 <= adrreg1) return 1; else return 0;}
     179  
     180  adr0adrx1 (r0, r1, x0, x1, p0, p1)
     181  type r0, r1;  type *p0, *p1;
     182  {if (adr0 <= adrx1) return 1; else return 0;}
     183  
     184  adr0regx1 (r0, r1, x0, x1, p0, p1)
     185  type r0, r1;  type *p0, *p1;
     186  {if (adr0 <= regx1) return 1; else return 0;}
     187  
     188  adrreg0reg1 (r0, r1, x0, x1, p0, p1)
     189  type r0, r1;  type *p0, *p1;
     190  {if (adrreg0 <= reg1) return 1; else return 0;}
     191  
     192  adrreg0indreg1 (r0, r1, x0, x1, p0, p1)
     193  type r0, r1;  type *p0, *p1;
     194  {if (adrreg0 <= indreg1) return 1; else return 0;}
     195  
     196  adrreg0imm1 (r0, r1, x0, x1, p0, p1)
     197  type r0, r1;  type *p0, *p1;
     198  {if (adrreg0 <= imm1) return 1; else return 0;}
     199  
     200  adrreg0limm1 (r0, r1, x0, x1, p0, p1)
     201  type r0, r1;  type *p0, *p1;
     202  {if (adrreg0 <= limm1) return 1; else return 0;}
     203  
     204  adrreg0adr1 (r0, r1, x0, x1, p0, p1)
     205  type r0, r1;  type *p0, *p1;
     206  {if (adrreg0 <= adr1) return 1; else return 0;}
     207  
     208  adrreg0adrreg1 (r0, r1, x0, x1, p0, p1)
     209  type r0, r1;  type *p0, *p1;
     210  {if (adrreg0 <= adrreg1) return 1; else return 0;}
     211  
     212  adrreg0adrx1 (r0, r1, x0, x1, p0, p1)
     213  type r0, r1;  type *p0, *p1;
     214  {if (adrreg0 <= adrx1) return 1; else return 0;}
     215  
     216  adrreg0regx1 (r0, r1, x0, x1, p0, p1)
     217  type r0, r1;  type *p0, *p1;
     218  {if (adrreg0 <= regx1) return 1; else return 0;}
     219  
     220  adrx0reg1 (r0, r1, x0, x1, p0, p1)
     221  type r0, r1;  type *p0, *p1;
     222  {if (adrx0 <= reg1) return 1; else return 0;}
     223  
     224  adrx0indreg1 (r0, r1, x0, x1, p0, p1)
     225  type r0, r1;  type *p0, *p1;
     226  {if (adrx0 <= indreg1) return 1; else return 0;}
     227  
     228  adrx0imm1 (r0, r1, x0, x1, p0, p1)
     229  type r0, r1;  type *p0, *p1;
     230  {if (adrx0 <= imm1) return 1; else return 0;}
     231  
     232  adrx0limm1 (r0, r1, x0, x1, p0, p1)
     233  type r0, r1;  type *p0, *p1;
     234  {if (adrx0 <= limm1) return 1; else return 0;}
     235  
     236  adrx0adr1 (r0, r1, x0, x1, p0, p1)
     237  type r0, r1;  type *p0, *p1;
     238  {if (adrx0 <= adr1) return 1; else return 0;}
     239  
     240  adrx0adrreg1 (r0, r1, x0, x1, p0, p1)
     241  type r0, r1;  type *p0, *p1;
     242  {if (adrx0 <= adrreg1) return 1; else return 0;}
     243  
     244  adrx0adrx1 (r0, r1, x0, x1, p0, p1)
     245  type r0, r1;  type *p0, *p1;
     246  {if (adrx0 <= adrx1) return 1; else return 0;}
     247  
     248  adrx0regx1 (r0, r1, x0, x1, p0, p1)
     249  type r0, r1;  type *p0, *p1;
     250  {if (adrx0 <= regx1) return 1; else return 0;}
     251  
     252  regx0reg1 (r0, r1, x0, x1, p0, p1)
     253  type r0, r1;  type *p0, *p1;
     254  {if (regx0 <= reg1) return 1; else return 0;}
     255  
     256  regx0indreg1 (r0, r1, x0, x1, p0, p1)
     257  type r0, r1;  type *p0, *p1;
     258  {if (regx0 <= indreg1) return 1; else return 0;}
     259  
     260  regx0imm1 (r0, r1, x0, x1, p0, p1)
     261  type r0, r1;  type *p0, *p1;
     262  {if (regx0 <= imm1) return 1; else return 0;}
     263  
     264  regx0limm1 (r0, r1, x0, x1, p0, p1)
     265  type r0, r1;  type *p0, *p1;
     266  {if (regx0 <= limm1) return 1; else return 0;}
     267  
     268  regx0adr1 (r0, r1, x0, x1, p0, p1)
     269  type r0, r1;  type *p0, *p1;
     270  {if (regx0 <= adr1) return 1; else return 0;}
     271  
     272  regx0adrreg1 (r0, r1, x0, x1, p0, p1)
     273  type r0, r1;  type *p0, *p1;
     274  {if (regx0 <= adrreg1) return 1; else return 0;}
     275  
     276  regx0adrx1 (r0, r1, x0, x1, p0, p1)
     277  type r0, r1;  type *p0, *p1;
     278  {if (regx0 <= adrx1) return 1; else return 0;}
     279  
     280  regx0regx1 (r0, r1, x0, x1, p0, p1)
     281  type r0, r1;  type *p0, *p1;
     282  {if (regx0 <= regx1) return 1; else return 0;}
     283