blob: 73f8f1c7bef86907c4d300e03e39b8386792233d [file] [log] [blame]
/* Test AAPCS64 layout and __builtin_va_arg.
This test is focused particularly on __fp16 unnamed homogeneous
floating-point aggregate types which should be passed in fp/simd
registers until we run out of those, then the stack. */
/* { dg-do run { target aarch64*-*-* } } */
#ifndef IN_FRAMEWORK
#define AAPCS64_TEST_STDARG
#define TESTFILE "va_arg-16.c"
#include "type-def.h"
struct hfa_f16x1_t hfa_f16x1 = {2.0f};
struct hfa_f16x2_t hfa_f16x2 = {4.0f, 8.0f};
struct hfa_f16x3_t hfa_f16x3 = {16.0f, 32.0f, 64.0f};
#include "abitest.h"
#else
ARG (int, 1, W0, LAST_NAMED_ARG_ID)
DOTS
ANON (struct hfa_f16x1_t, hfa_f16x1, H0 , 0)
ANON (struct hfa_f16x2_t, hfa_f16x2, H1 , 1)
ANON (struct hfa_f16x3_t, hfa_f16x3, H3 , 2)
ANON (struct hfa_f16x2_t, hfa_f16x2, H6 , 3)
ANON (struct hfa_f16x1_t, hfa_f16x1, STACK , 4)
LAST_ANON(double , 1.0 , STACK+8, 5)
#endif