blob: bf8bc7468f785519f0e97e3b1b10231d5cecf469 [file] [log] [blame]
/* Test AAPCS64 layout.
C.8 If the argument has an alignment of 16 then the NGRN is rounded up
the next even number.
C.9 If the argument is an Integral Type, the size of the argument is
equal to 16 and the NGRN is less than 7, the argument is copied
to x[NGRN] and x[NGRN+1]. x[NGRN] shall contain the lower addressed
double-word of the memory representation of the argument. The
NGRN is incremented by two. The argument has now been allocated.
The case of passing a 128-bit integer in two general registers is covered
in this test. */
/* { dg-do run { target aarch64*-*-* } } */
#define TESTFILE "test_align-3.c"
#include "type-def.h"
union int128_t qword;
int gInt[4];
void init_data ()
/* Initialize the quadword integer via the union. */
qword.h64 = 0x123456789ABCDEF0LL;
gInt[0] = 12345;
gInt[1] = 23456;
gInt[2] = 34567;
gInt[3] = 45678;
#include "abitest.h"
ARG(int, gInt[0], W0)
ARG(int, gInt[1], W1)
ARG(int, gInt[2], W2)
ARG(__int128, qword.i, X4)
LAST_ARG(int, gInt[3], W6)