> On Nov 30, 2021, at 12:08 PM, Peter Bergner <berg...@linux.ibm.com> wrote: > > On 11/30/21 11:51 AM, Qing Zhao wrote: >> So, looks like that the variable with OPAQUE_TYPE cannot be all explicitly >> initialized even at source code level. >> >> The only way to initialize such variable (only __vector_quad, not for >> __vector_pairs) at source code level is through call to >> __builtin_mma_xxsetaccz as: >> >> void >> foo (__vector_quad *dst) >> { >> __vector_quad acc; >> __builtin_mma_xxsetaccz(&acc); >> *dst = acc; >> } >> >> Is this the correct understanding? > > Correct. Or via... > > >> Is there way to initialize such variable to other values than zero at source >> code level? > > Not for any constant values. You can load it from memory though like below, > which is also allowed for __vector_pair: > > void > foo (__vector_quad *dst, __vector_quad *src) > { > __vector_quad acc; > acc = *src; > ... > } > void > bar (__vector_pair *dst, __vector_pair *src) > { > __vector_pair pair; > pair = *src; > ... > }
However, even with the above, the memory pointed by “src” still need to be initialized somewhere. How to provide the initial value to the variable in the beginning for __vector_pair type? Qing > > We do not accept things like: > > acc = 0; > acc = {0, 0, ... }; > etc. > > Peter