1  /* { dg-do assemble } */
       2  /* { dg-skip-if "" { powerpc-ibm-aix* } } */
       3  /* { dg-skip-if "no TFmode" { powerpc-*-eabi* } } */
       4  /* { dg-require-effective-target longdouble128 } */
       5  /* { dg-options "-O2 -fno-align-functions -fno-asynchronous-unwind-tables -mtraceback=no -save-temps" } */
       6  
       7  #if defined(__LONG_DOUBLE_IEEE128__)
       8  /* If long double is IEEE 128-bit, we need to use the __ibm128 type instead of
       9     long double.  We can't use __ibm128 on systems that don't support IEEE
      10     128-bit floating point, because the type is not enabled on those
      11     systems.  */
      12  #define TFmode __ibm128
      13  
      14  #elif defined(__LONG_DOUBLE_IBM128__)
      15  #define TFmode long double
      16  
      17  #else
      18  #error "long double must be either IBM 128-bit or IEEE 128-bit"
      19  #endif
      20  
      21  void w1 (void *x, TFmode y) { *(TFmode *) (x + 32767) = y; }
      22  void w2 (void *x, TFmode y) { *(TFmode *) (x + 32766) = y; }
      23  void w3 (void *x, TFmode y) { *(TFmode *) (x + 32765) = y; }
      24  void w4 (void *x, TFmode y) { *(TFmode *) (x + 32764) = y; }
      25  void w5 (void *x, TFmode y) { *(TFmode *) (x + 32763) = y; }
      26  void w6 (void *x, TFmode y) { *(TFmode *) (x + 32762) = y; }
      27  void w7 (void *x, TFmode y) { *(TFmode *) (x + 32761) = y; }
      28  void w8 (void *x, TFmode y) { *(TFmode *) (x + 32760) = y; }
      29  void w9 (void *x, TFmode y) { *(TFmode *) (x + 32759) = y; }
      30  void w10 (void *x, TFmode y) { *(TFmode *) (x + 32758) = y; }
      31  void w11 (void *x, TFmode y) { *(TFmode *) (x + 32757) = y; }
      32  void w12 (void *x, TFmode y) { *(TFmode *) (x + 32756) = y; }
      33  void w13 (void *x, TFmode y) { *(TFmode *) (x + 32755) = y; }
      34  void w14 (void *x, TFmode y) { *(TFmode *) (x + 32754) = y; }
      35  void w15 (void *x, TFmode y) { *(TFmode *) (x + 32753) = y; }
      36  void w16 (void *x, TFmode y) { *(TFmode *) (x + 32752) = y; }
      37  void w17 (void *x, TFmode y) { *(TFmode *) (x + 32751) = y; }
      38  void w18 (void *x, TFmode y) { *(TFmode *) (x + 32750) = y; }
      39  void w19 (void *x, TFmode y) { *(TFmode *) (x + 32749) = y; }
      40  void w20 (void *x, TFmode y) { *(TFmode *) (x + 32748) = y; }
      41  
      42  TFmode r1 (void *x) { return *(TFmode *) (x + 32767); }
      43  TFmode r2 (void *x) { return *(TFmode *) (x + 32766); }
      44  TFmode r3 (void *x) { return *(TFmode *) (x + 32765); }
      45  TFmode r4 (void *x) { return *(TFmode *) (x + 32764); }
      46  TFmode r5 (void *x) { return *(TFmode *) (x + 32763); }
      47  TFmode r6 (void *x) { return *(TFmode *) (x + 32762); }
      48  TFmode r7 (void *x) { return *(TFmode *) (x + 32761); }
      49  TFmode r8 (void *x) { return *(TFmode *) (x + 32760); }
      50  TFmode r9 (void *x) { return *(TFmode *) (x + 32759); }
      51  TFmode r10 (void *x) { return *(TFmode *) (x + 32758); }
      52  TFmode r11 (void *x) { return *(TFmode *) (x + 32757); }
      53  TFmode r12 (void *x) { return *(TFmode *) (x + 32756); }
      54  TFmode r13 (void *x) { return *(TFmode *) (x + 32755); }
      55  TFmode r14 (void *x) { return *(TFmode *) (x + 32754); }
      56  TFmode r15 (void *x) { return *(TFmode *) (x + 32753); }
      57  TFmode r16 (void *x) { return *(TFmode *) (x + 32752); }
      58  TFmode r17 (void *x) { return *(TFmode *) (x + 32751); }
      59  TFmode r18 (void *x) { return *(TFmode *) (x + 32750); }
      60  TFmode r19 (void *x) { return *(TFmode *) (x + 32749); }
      61  TFmode r20 (void *x) { return *(TFmode *) (x + 32748); }
      62  
      63  /* { dg-final { object-size text == 544 } } */