blob: a2b57581c84f4c921bb658d9a0d3f0268e5415fb [file] [log] [blame]
/* { dg-options "-O" } */
#pragma GCC target "+simd+fp16"
__Float16x4_t
f1 (__Float16x4_t x, __Float16x4_t y)
{
return x * y[0];
}
__Float16x4_t
f2 (__Float16x4_t x, __Float16x4_t y)
{
return x * y[3];
}
__Float16x4_t
f3 (__Float16x4_t x, __Float16x8_t y)
{
return x * y[0];
}
__Float16x4_t
f4 (__Float16x4_t x, __Float16x8_t y)
{
return x * y[7];
}
__Float16x8_t
f5 (__Float16x8_t x, __Float16x4_t y)
{
return x * y[0];
}
__Float16x8_t
f6 (__Float16x8_t x, __Float16x4_t y)
{
return x * y[3];
}
__Float16x8_t
f7 (__Float16x8_t x, __Float16x8_t y)
{
return x * y[0];
}
__Float16x8_t
f8 (__Float16x8_t x, __Float16x8_t y)
{
return x * y[7];
}
/* { dg-final { scan-assembler-times {\tfmul\tv0.4h, v0.4h, v1.h\[0\]} 2 } } */
/* { dg-final { scan-assembler-times {\tfmul\tv0.4h, v0.4h, v1.h\[3\]} 1 } } */
/* { dg-final { scan-assembler-times {\tfmul\tv0.4h, v0.4h, v1.h\[7\]} 1 } } */
/* { dg-final { scan-assembler-times {\tfmul\tv0.8h, v0.8h, v1.h\[0\]} 2 } } */
/* { dg-final { scan-assembler-times {\tfmul\tv0.8h, v0.8h, v1.h\[3\]} 1 } } */
/* { dg-final { scan-assembler-times {\tfmul\tv0.8h, v0.8h, v1.h\[7\]} 1 } } */