1  /* Test AAPCS64 function result return.
       2  
       3     This test covers most fundamental data types as specified in
       4     AAPCS64 \S 4.1.  */
       5  
       6  /* { dg-do run { target aarch64*-*-* } } */
       7  /* { dg-additional-sources "abitest.S" } */
       8  
       9  #ifndef IN_FRAMEWORK
      10  #define TESTFILE "func-ret-1.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  vlf1_t vlf1 = (vlf1_t) { 17.0 };
      16  
      17  vldf1_t vldf1 = (vldf1_t) { 17.0dl };
      18  
      19  union int128_t qword;
      20  
      21  int *int_ptr = (int *)0xabcdef0123456789ULL;
      22  
      23  #define HAS_DATA_INIT_FUNC
      24  void init_data ()
      25  {
      26    /* Init signed quad-word integer.  */
      27    qword.l64 = 0xfdb9753102468aceLL;
      28    qword.h64 = 0xeca8642013579bdfLL;
      29  }
      30  
      31  #include "abitest-2.h"
      32  #else
      33  FUNC_VAL_CHECK (0, unsigned char , 0xfe      , X0, i8in64)
      34  FUNC_VAL_CHECK (1,   signed char , 0xed      , X0, i8in64)
      35  FUNC_VAL_CHECK (2, unsigned short, 0xdcba    , X0, i16in64)
      36  FUNC_VAL_CHECK (3,   signed short, 0xcba9    , X0, i16in64)
      37  FUNC_VAL_CHECK (4, unsigned int  , 0xdeadbeef, X0, i32in64)
      38  FUNC_VAL_CHECK (5,   signed int  , 0xcafebabe, X0, i32in64)
      39  FUNC_VAL_CHECK (6, unsigned long long, 0xba98765432101234ULL, X0, flat)
      40  FUNC_VAL_CHECK (7,   signed long long, 0xa987654321012345LL, X0, flat)
      41  FUNC_VAL_CHECK (8,       __int128, qword.i, X0, flat)
      42  FUNC_VAL_CHECK (9,          float, 65432.12345f, S0, flat)
      43  FUNC_VAL_CHECK (10,        double, 9876543.212345, D0, flat)
      44  FUNC_VAL_CHECK (11,   long double, 98765432123456789.987654321L, Q0, flat)
      45  FUNC_VAL_CHECK (12,         vf2_t,        vf2, D0, f32in64)
      46  FUNC_VAL_CHECK (13,         vi4_t,        vi4, Q0, i32in128)
      47  FUNC_VAL_CHECK (14,         int *,    int_ptr, X0, flat)
      48  FUNC_VAL_CHECK (15,         vlf1_t,    vlf1, Q0, flat)
      49  FUNC_VAL_CHECK (16,         __fp16,    0xabcd, H0, flat)
      50  
      51  FUNC_VAL_CHECK (17,     _Decimal32, 65432.12345df, S0, flat)
      52  FUNC_VAL_CHECK (18,     _Decimal64, 9876543.212345dd, D0, flat)
      53  FUNC_VAL_CHECK (19,    _Decimal128, 98765432123456789.987654321dl, Q0, flat)
      54  FUNC_VAL_CHECK (20,        vldf1_t, vldf1, Q0, flat)
      55  #endif