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