(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
aapcs64/
va_arg_dfp-2.c
       1  /* Test AAPCS64 layout and __builtin_va_arg.
       2  
       3     This test covers fundamental data types as specified in AAPCS64 \S 4.1.
       4     It is focus on unnamed parameter passed on stack.  */
       5  
       6  /* { dg-do run { target aarch64*-*-* } } */
       7  
       8  #ifndef IN_FRAMEWORK
       9  #define AAPCS64_TEST_STDARG
      10  #define TESTFILE "va_arg_dfp-2.c"
      11  #include "type-def.h"
      12  
      13  vf2_t vf2 = (vf2_t){ 17.f, 18.f };
      14  vi4_t vi4 = (vi4_t){ 0xdeadbabe, 0xbabecafe, 0xcafebeef, 0xbeefdead };
      15  union int128_t qword;
      16  signed char sc = 0xed;
      17  signed int sc_promoted = 0xffffffed;
      18  signed short ss = 0xcba9;
      19  signed int ss_promoted = 0xffffcba9;
      20  _Decimal32 fp = 65432.12345df;
      21  _Decimal64 fp_promoted = (_Decimal64)65432.12345df;
      22  __fp16 fp16 = 2.0f;
      23  __fp16 fp16_promoted = (double)2.0f;
      24  
      25  #define HAS_DATA_INIT_FUNC
      26  void init_data ()
      27  {
      28    /* Init signed quad-word integer.  */
      29    qword.l64 = 0xfdb9753102468aceLL;
      30    qword.h64 = 0xeca8642013579bdfLL;
      31  }
      32  
      33  #include "abitest.h"
      34  #else
      35    ARG          (         int      , 0xff  ,                            W0,        0)
      36    ARG          (    _Decimal32    , 1.0df ,                            S0,        1)
      37    ARG          (    _Decimal32    , 1.0df ,                            S1,        2)
      38    ARG          (    _Decimal32    , 1.0df ,                            S2,        3)
      39    ARG          (    _Decimal32    , 1.0df ,                            S3,        4)
      40    ARG          (    _Decimal32    , 1.0df ,                            S4,        5)
      41    ARG          (    _Decimal32    , 1.0df ,                            S5,        6)
      42    ARG          (    _Decimal32    , 1.0df ,                            S6,        7)
      43    ARG          (    _Decimal32    , 1.0df ,                            S7, LAST_NAMED_ARG_ID)
      44    DOTS
      45    ANON         (          __int128, qword.i              ,             X2,        8)
      46    ANON         (  signed long long, 0xa987654321012345LL ,             X4,        9)
      47    ANON         (          __int128, qword.i              ,             X6,       10)
      48  #ifndef __AAPCS64_BIG_ENDIAN__
      49    ANON_PROMOTED(unsigned char     , 0xfe  , unsigned int, 0xfe       , STACK,    11)
      50    ANON_PROMOTED(  signed char     , sc    ,   signed int, sc_promoted, STACK+8,  12)
      51    ANON_PROMOTED(unsigned short    , 0xdcba, unsigned int, 0xdcba     , STACK+16, 13)
      52    ANON_PROMOTED(  signed short    , ss    ,   signed int, ss_promoted, STACK+24, 14)
      53    ANON         (unsigned int      , 0xdeadbeef,                        STACK+32, 15)
      54    ANON         (  signed int      , 0xcafebabe,                        STACK+40, 16)
      55  #else
      56    ANON_PROMOTED(unsigned char     , 0xfe  , unsigned int, 0xfe       , STACK+4,  11)
      57    ANON_PROMOTED(  signed char     , sc    ,   signed int, sc_promoted, STACK+12, 12)
      58    ANON_PROMOTED(unsigned short    , 0xdcba, unsigned int, 0xdcba     , STACK+20, 13)
      59    ANON_PROMOTED(  signed short    , ss    ,   signed int, ss_promoted, STACK+28, 14)
      60    ANON         (unsigned int      , 0xdeadbeef,                        STACK+36, 15)
      61    ANON         (  signed int      , 0xcafebabe,                        STACK+44, 16)
      62  #endif
      63    ANON         (unsigned long long, 0xba98765432101234ULL,             STACK+48, 17)
      64    ANON_PROMOTED(    _Decimal32    , fp    ,       _Decimal64, fp_promoted, STACK+56, 18)
      65    ANON         (     _Decimal64   , 9876543.212345dd,                  STACK+64, 19)
      66    ANON         (    _Decimal128   , 98765432123456789.987654321dl,     STACK+80, 20)
      67    ANON         (             vf2_t, vf2   ,                            STACK+96, 21)
      68    ANON         (             vi4_t, vi4   ,                            STACK+112,22)
      69    ANON_PROMOTED(         __fp16   , fp16  ,     double, fp16_promoted, STACK+128,23)
      70  #ifndef __AAPCS64_BIG_ENDIAN__
      71    LAST_ANON    (         int      , 0xeeee,                            STACK+136,24)
      72  #else
      73    LAST_ANON    (         int      , 0xeeee,                            STACK+140,24)
      74  #endif
      75  #endif