blob: fe69fd8a680e3e50831293f4b4bea503eaa3671a [file] [log] [blame]
/* { dg-do compile { target { s390*-*-* } } } */
/* { dg-options "-O3 -mzarch -march=z14 -mzvector" } */
#include <vecintrin.h>
typedef float __attribute__((aligned(8))) float_aligned;
vector float
foo (float_aligned *a)
{
return vec_xl (0, a);
}
vector float
bar (const float_aligned *a)
{
return vec_xl (0, a);
}
void
baz (float_aligned *f, vector float a)
{
vec_xst (a, 0, f);
}
vector float
foo2 (float_aligned *a)
{
return vec_xlw4 (0, a);
}
vector float
bar2 (const float_aligned *a)
{
return vec_xlw4 (0, a);
}
void
baz2 (float_aligned *f, vector float a)
{
vec_xstw4 (a, 0, f);
}
/* Make sure alignment hints are generated if the source or target
operand is properly aligned. */
/* { dg-final { scan-assembler-times "vl\t%v\[0-9\]*,0\\(%r2\\),3" 4 } } */
/* { dg-final { scan-assembler-times "vst\t%v\[0-9\]*,0\\(%r2\\),3" 2 } } */