/* Test AAPCS64 function result return. This test covers complex types. Complex floating-point types are treated as homogeneous floating-point aggregates, while complex integral types are treated as general composite types. */ /* { dg-do run { target aarch64*-*-* } } */ /* { dg-additional-sources "abitest.S" } */ /* { dg-require-effective-target aarch64_big_endian } */ #ifndef IN_FRAMEWORK #define TESTFILE "func-ret-4.c" #include "abitest-2.h" #else /* Complex floating-point types are passed in fp/simd registers. */ FUNC_VAL_CHECK ( 0, _Complex float , 12.3f + 23.4fi, S0, flat) FUNC_VAL_CHECK ( 1, _Complex double, 34.56 + 45.67i, D0, flat) FUNC_VAL_CHECK ( 2, _Complex long double, 56789.01234 + 67890.12345i, Q0, flat) /* Complex integral types are passed in general registers or via a pointer in X8. */ FUNC_VAL_CHECK (10, _Complex short , 12345 + 23456i, X0, flat) FUNC_VAL_CHECK (11, _Complex int , 34567 + 45678i, X0, flat) FUNC_VAL_CHECK (12, _Complex __int128, 567890 + 678901i, X8, flat) #endif