/* { dg-do compile } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-require-effective-target lp64 } */
/* { dg-options "-O2 -mdejagnu-cpu=power9" } */

#define TYPE void*
#define TYPE2 void*

struct path {
    TYPE2 mnt;
    TYPE dentry;
};

struct nameidata {
    struct path path;
    struct path root;
};

__attribute__ ((noinline))
TYPE foo(struct nameidata *nd)
{
  TYPE d;
  TYPE2 d2;

  nd->path = nd->root;
  d = nd->path.dentry;
  d2 = nd->path.mnt;
  return d;
}

/* { dg-final { scan-assembler-not {\mlxv\M} } } */
/* { dg-final { scan-assembler-not {\mstxv\M} } } */
/* { dg-final { scan-assembler-times {\mld\M} 2 } } */
/* { dg-final { scan-assembler-times {\mstd\M} 2 } } */
