1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
3
4 typedef unsigned int UINT64 __attribute__((__mode__(__DI__)));
5
6 typedef struct
7 {
8 UINT64 x[2] __attribute__((aligned(16)));
9 } fpreg;
10
11 struct ia64_args
12 {
13 fpreg fp_regs[8];
14 UINT64 gp_regs[8];
15 };
16
17 void
18 ffi_call(long i, long gpcount, long fpcount, void **avalue)
19 {
20 struct ia64_args *stack;
21 stack = __builtin_alloca (64);
22 asm ("stf.spill %0 = %1%P0" : "=m" (*&stack->fp_regs[fpcount++])
23 : "f"(*(double *)avalue[i]));
24 stack->gp_regs[gpcount++] = *(UINT64 *)avalue[i];
25 }