blob: 8d0b2e94001869fa921330f6e2742db7917d70b6 [file] [log] [blame]
/* PR target/92686 */
/* { dg-do compile } */
/* { dg-options "-Ofast -mavx512bw -mavx512vl -mno-xop -mprefer-vector-width=256" } */
/* { dg-final { scan-assembler-times "vpcmp\[bwdq\]\[\t ]" 8 } } */
/* { dg-final { scan-assembler-times "vpcmpu\[bwdq\]\[\t ]" 8 } } */
/* { dg-final { scan-assembler-times "(?:vmovdq\[au\]8|vpblendmb)\[^\{\n\]*%ymm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
/* { dg-final { scan-assembler-times "(?:vmovdq\[au\]16|vpblendmw)\[^\{\n\]*%ymm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
/* { dg-final { scan-assembler-times "(?:vmovdq\[au\]32|vpblendmd)\[^\{\n\]*%ymm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
/* { dg-final { scan-assembler-times "(?:vmovdq\[au\]64|vpblendmq)\[^\{\n\]*%ymm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
__attribute__((noipa)) void
f1 (char *__restrict dst, char *__restrict src1, char *__restrict src2)
{
for (int i = 0; i != 32; i++)
dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f2 (unsigned char *__restrict dst, unsigned char *__restrict src1,
unsigned char *__restrict src2)
{
for (int i = 0; i != 32; i++)
dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f3 (char *__restrict dst, char *__restrict src1, char *__restrict src2)
{
for (int i = 0; i != 32; i++)
dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f4 (unsigned char *__restrict dst, unsigned char *__restrict src1,
unsigned char *__restrict src2)
{
for (int i = 0; i != 32; i++)
dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f5 (short *__restrict dst, short *__restrict src1, short *__restrict src2)
{
for (int i = 0; i != 16; i++)
dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f6 (unsigned short *__restrict dst, unsigned short *__restrict src1,
unsigned short *__restrict src2)
{
for (int i = 0; i != 16; i++)
dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f7 (short *__restrict dst, short *__restrict src1, short *__restrict src2)
{
for (int i = 0; i != 16; i++)
dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f8 (unsigned short *__restrict dst, unsigned short *__restrict src1,
unsigned short *__restrict src2)
{
for (int i = 0; i != 16; i++)
dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f9 (int *__restrict dst, int *__restrict src1, int *__restrict src2)
{
for (int i = 0; i != 8; i++)
dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f10 (unsigned int *__restrict dst, unsigned int *__restrict src1,
unsigned int *__restrict src2)
{
for (int i = 0; i != 8; i++)
dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f11 (int *__restrict dst, int *__restrict src1, int *__restrict src2)
{
for (int i = 0; i != 8; i++)
dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f12 (unsigned int *__restrict dst, unsigned int *__restrict src1,
unsigned int *__restrict src2)
{
for (int i = 0; i != 8; i++)
dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f13 (long long int *__restrict dst, long long int *__restrict src1,
long long int *__restrict src2)
{
for (int i = 0; i != 4; i++)
dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f14 (unsigned long long int *__restrict dst,
unsigned long long int *__restrict src1,
unsigned long long int *__restrict src2)
{
for (int i = 0; i != 4; i++)
dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f15 (long long int *__restrict dst, long long int *__restrict src1,
long long int *__restrict src2)
{
for (int i = 0; i != 4; i++)
dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
}
__attribute__((noipa)) void
f16 (unsigned long long int *__restrict dst,
unsigned long long int *__restrict src1,
unsigned long long int *__restrict src2)
{
for (int i = 0; i != 4; i++)
dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
}