(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
s390/
addr-constraints-1.c
       1  /* { dg-compile } */
       2  /* { dg-options "-O2" } */
       3  
       4  static inline unsigned long
       5  lay_uw(unsigned long addr)
       6  {
       7    unsigned long result;
       8  
       9    __asm__ ("lay    %[result],%a[addr]"
      10  	   : [result] "=d" (result)
      11  	   : [addr] "UW" (addr));
      12    return result;
      13  }
      14  
      15  static inline unsigned long
      16  la_u(unsigned long addr)
      17  {
      18    unsigned long result;
      19  
      20    __asm__ ("la    %[result],%a[addr]"
      21  	   : [result] "=d" (result)
      22  	   : [addr] "U" (addr));
      23    return result;
      24  }
      25  
      26  static inline unsigned long
      27  lay_zqzrzszt(unsigned long addr)
      28  {
      29    unsigned long result;
      30  
      31    __asm__ ("lay    %[result],%a[addr]"
      32  	   : [result] "=d" (result)
      33  	   : [addr] "ZQZRZSZT" (addr));
      34    return result;
      35  }
      36  
      37  static inline unsigned long
      38  la_zqzr(unsigned long addr)
      39  {
      40    unsigned long result;
      41  
      42    __asm__ ("la    %[result],%a[addr]"
      43  	   : [result] "=d" (result)
      44  	   : [addr] "ZQZR" (addr));
      45    return result;
      46  }
      47  
      48  
      49  extern unsigned long a[15];
      50  
      51  int main(void)
      52  {
      53    a[1] = lay_uw(3333);
      54    a[2] = lay_uw(4444);
      55    a[3] = lay_uw(1000000);
      56    a[4] = lay_uw(a[0]);
      57  
      58    a[5] = la_u(2222);
      59    a[6] = la_u(5555);
      60    a[7] = la_u(a[0]);
      61  
      62    a[8] = lay_zqzrzszt(3333);
      63    a[9] = lay_zqzrzszt(4444);
      64    a[10] = lay_zqzrzszt(1000000);
      65    a[11] = lay_zqzrzszt(a[0]);
      66  
      67    a[12] = la_zqzr(2222);
      68    a[13] = la_zqzr(5555);
      69    a[14] = la_zqzr(a[0]);
      70  }