How to force GCC to pass 128bits/256bits struct as function param in xmm/ymm register?

Viewed 707

How to force GCC to pass 128bits/256bits struct as function param in xmm/ymm register? ie. if my struct is 256bits wide (UnsignedLongLongStruct below)

(I know if I use intrinsics to make a packed integer, gcc is smart enough to put it into %ymm register, but can I do it with struct ?)

typedef struct {
   unsigned long long ull1;
   unsigned long long ull2;
   unsigned long long ull3;
   unsigned long long ull4;
} UnsignedLongLongStruct;

void func1( UnsignedLongLongStruct unsignedLongLongStruct ) {
....
}
2 Answers
Related