1  /* { dg-skip-if "too many arguments in function call" { bpf-*-* } } */
       2  
       3  #define E0 ((type *)10000000)
       4  #define reg0 r0
       5  #define indreg0 (*p0)
       6  #define imm0 22
       7  #define limm0 ((type)(int)&glob0)
       8  #define adr0 (*E0)
       9  #define adrreg0 (p0[10000000])
      10  #define adrx0 (E0[x0])
      11  #define regx0 (p0[x0])
      12  
      13  #define E1 ((type *)(11111111 & ~(__alignof__ (type) - 1)))
      14  #define reg1 r1
      15  #define indreg1 (*p1)
      16  #define imm1 33
      17  #define limm1 ((type)(int)&glob1)
      18  #define adr1 (*E1)
      19  #define adrreg1 (p1[1111111/4])
      20  #define adrx1 (E1[x1])
      21  #define regx1 (p1[x1])
      22  
      23  int glob0, glob1;
      24  
      25  #define type short
      26  
      27  reg0reg1_set (r0, r1, x0, x1, p0, p1)
      28  type r0, r1;  type *p0, *p1;
      29  {reg0 = reg1;  }
      30  
      31  reg0indreg1_set (r0, r1, x0, x1, p0, p1)
      32  type r0, r1;  type *p0, *p1;
      33  {reg0 = indreg1;  }
      34  
      35  reg0imm1_set (r0, r1, x0, x1, p0, p1)
      36  type r0, r1;  type *p0, *p1;
      37  {reg0 = imm1;  }
      38  
      39  reg0limm1_set (r0, r1, x0, x1, p0, p1)
      40  type r0, r1;  type *p0, *p1;
      41  {reg0 = limm1;  }
      42  
      43  reg0adr1_set (r0, r1, x0, x1, p0, p1)
      44  type r0, r1;  type *p0, *p1;
      45  {reg0 = adr1;  }
      46  
      47  reg0adrreg1_set (r0, r1, x0, x1, p0, p1)
      48  type r0, r1;  type *p0, *p1;
      49  {reg0 = adrreg1;  }
      50  
      51  reg0adrx1_set (r0, r1, x0, x1, p0, p1)
      52  type r0, r1;  type *p0, *p1;
      53  {reg0 = adrx1;  }
      54  
      55  reg0regx1_set (r0, r1, x0, x1, p0, p1)
      56  type r0, r1;  type *p0, *p1;
      57  {reg0 = regx1;  }
      58  
      59  indreg0reg1_set (r0, r1, x0, x1, p0, p1)
      60  type r0, r1;  type *p0, *p1;
      61  {indreg0 = reg1;  }
      62  
      63  indreg0indreg1_set (r0, r1, x0, x1, p0, p1)
      64  type r0, r1;  type *p0, *p1;
      65  {indreg0 = indreg1;  }
      66  
      67  indreg0imm1_set (r0, r1, x0, x1, p0, p1)
      68  type r0, r1;  type *p0, *p1;
      69  {indreg0 = imm1;  }
      70  
      71  indreg0limm1_set (r0, r1, x0, x1, p0, p1)
      72  type r0, r1;  type *p0, *p1;
      73  {indreg0 = limm1;  }
      74  
      75  indreg0adr1_set (r0, r1, x0, x1, p0, p1)
      76  type r0, r1;  type *p0, *p1;
      77  {indreg0 = adr1;  }
      78  
      79  indreg0adrreg1_set (r0, r1, x0, x1, p0, p1)
      80  type r0, r1;  type *p0, *p1;
      81  {indreg0 = adrreg1;  }
      82  
      83  indreg0adrx1_set (r0, r1, x0, x1, p0, p1)
      84  type r0, r1;  type *p0, *p1;
      85  {indreg0 = adrx1;  }
      86  
      87  indreg0regx1_set (r0, r1, x0, x1, p0, p1)
      88  type r0, r1;  type *p0, *p1;
      89  {indreg0 = regx1;  }
      90  
      91  adr0reg1_set (r0, r1, x0, x1, p0, p1)
      92  type r0, r1;  type *p0, *p1;
      93  {adr0 = reg1;  }
      94  
      95  adr0indreg1_set (r0, r1, x0, x1, p0, p1)
      96  type r0, r1;  type *p0, *p1;
      97  {adr0 = indreg1;  }
      98  
      99  adr0imm1_set (r0, r1, x0, x1, p0, p1)
     100  type r0, r1;  type *p0, *p1;
     101  {adr0 = imm1;  }
     102  
     103  adr0limm1_set (r0, r1, x0, x1, p0, p1)
     104  type r0, r1;  type *p0, *p1;
     105  {adr0 = limm1;  }
     106  
     107  adr0adr1_set (r0, r1, x0, x1, p0, p1)
     108  type r0, r1;  type *p0, *p1;
     109  {adr0 = adr1;  }
     110  
     111  adr0adrreg1_set (r0, r1, x0, x1, p0, p1)
     112  type r0, r1;  type *p0, *p1;
     113  {adr0 = adrreg1;  }
     114  
     115  adr0adrx1_set (r0, r1, x0, x1, p0, p1)
     116  type r0, r1;  type *p0, *p1;
     117  {adr0 = adrx1;  }
     118  
     119  adr0regx1_set (r0, r1, x0, x1, p0, p1)
     120  type r0, r1;  type *p0, *p1;
     121  {adr0 = regx1;  }
     122  
     123  adrreg0reg1_set (r0, r1, x0, x1, p0, p1)
     124  type r0, r1;  type *p0, *p1;
     125  {adrreg0 = reg1;  }
     126  
     127  adrreg0indreg1_set (r0, r1, x0, x1, p0, p1)
     128  type r0, r1;  type *p0, *p1;
     129  {adrreg0 = indreg1;  }
     130  
     131  adrreg0imm1_set (r0, r1, x0, x1, p0, p1)
     132  type r0, r1;  type *p0, *p1;
     133  {adrreg0 = imm1;  }
     134  
     135  adrreg0limm1_set (r0, r1, x0, x1, p0, p1)
     136  type r0, r1;  type *p0, *p1;
     137  {adrreg0 = limm1;  }
     138  
     139  adrreg0adr1_set (r0, r1, x0, x1, p0, p1)
     140  type r0, r1;  type *p0, *p1;
     141  {adrreg0 = adr1;  }
     142  
     143  adrreg0adrreg1_set (r0, r1, x0, x1, p0, p1)
     144  type r0, r1;  type *p0, *p1;
     145  {adrreg0 = adrreg1;  }
     146  
     147  adrreg0adrx1_set (r0, r1, x0, x1, p0, p1)
     148  type r0, r1;  type *p0, *p1;
     149  {adrreg0 = adrx1;  }
     150  
     151  adrreg0regx1_set (r0, r1, x0, x1, p0, p1)
     152  type r0, r1;  type *p0, *p1;
     153  {adrreg0 = regx1;  }
     154  
     155  adrx0reg1_set (r0, r1, x0, x1, p0, p1)
     156  type r0, r1;  type *p0, *p1;
     157  {adrx0 = reg1;  }
     158  
     159  adrx0indreg1_set (r0, r1, x0, x1, p0, p1)
     160  type r0, r1;  type *p0, *p1;
     161  {adrx0 = indreg1;  }
     162  
     163  adrx0imm1_set (r0, r1, x0, x1, p0, p1)
     164  type r0, r1;  type *p0, *p1;
     165  {adrx0 = imm1;  }
     166  
     167  adrx0limm1_set (r0, r1, x0, x1, p0, p1)
     168  type r0, r1;  type *p0, *p1;
     169  {adrx0 = limm1;  }
     170  
     171  adrx0adr1_set (r0, r1, x0, x1, p0, p1)
     172  type r0, r1;  type *p0, *p1;
     173  {adrx0 = adr1;  }
     174  
     175  adrx0adrreg1_set (r0, r1, x0, x1, p0, p1)
     176  type r0, r1;  type *p0, *p1;
     177  {adrx0 = adrreg1;  }
     178  
     179  adrx0adrx1_set (r0, r1, x0, x1, p0, p1)
     180  type r0, r1;  type *p0, *p1;
     181  {adrx0 = adrx1;  }
     182  
     183  adrx0regx1_set (r0, r1, x0, x1, p0, p1)
     184  type r0, r1;  type *p0, *p1;
     185  {adrx0 = regx1;  }
     186  
     187  regx0reg1_set (r0, r1, x0, x1, p0, p1)
     188  type r0, r1;  type *p0, *p1;
     189  {regx0 = reg1;  }
     190  
     191  regx0indreg1_set (r0, r1, x0, x1, p0, p1)
     192  type r0, r1;  type *p0, *p1;
     193  {regx0 = indreg1;  }
     194  
     195  regx0imm1_set (r0, r1, x0, x1, p0, p1)
     196  type r0, r1;  type *p0, *p1;
     197  {regx0 = imm1;  }
     198  
     199  regx0limm1_set (r0, r1, x0, x1, p0, p1)
     200  type r0, r1;  type *p0, *p1;
     201  {regx0 = limm1;  }
     202  
     203  regx0adr1_set (r0, r1, x0, x1, p0, p1)
     204  type r0, r1;  type *p0, *p1;
     205  {regx0 = adr1;  }
     206  
     207  regx0adrreg1_set (r0, r1, x0, x1, p0, p1)
     208  type r0, r1;  type *p0, *p1;
     209  {regx0 = adrreg1;  }
     210  
     211  regx0adrx1_set (r0, r1, x0, x1, p0, p1)
     212  type r0, r1;  type *p0, *p1;
     213  {regx0 = adrx1;  }
     214  
     215  regx0regx1_set (r0, r1, x0, x1, p0, p1)
     216  type r0, r1;  type *p0, *p1;
     217  {regx0 = regx1;  }
     218