1 /* PR target/92686 */
2 /* { dg-do compile } */
3 /* { dg-options "-Ofast -mavx512bw -mno-avx512dq -mno-avx512vl -mno-xop -mprefer-vector-width=512" } */
4 /* { dg-final { scan-assembler-times "vpcmp\[bwdq\]\[\t ]" 8 } } */
5 /* { dg-final { scan-assembler-times "vpcmpu\[bwdq\]\[\t ]" 8 } } */
6 /* { dg-final { scan-assembler-times "vmovdq\[au\]8\[^\{\n\]*%zmm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
7 /* { dg-final { scan-assembler-times "vmovdq\[au\]16\[^\{\n\]*%zmm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
8 /* { dg-final { scan-assembler-times "vmovdq\[au\]32\[^\{\n\]*%zmm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
9 /* { dg-final { scan-assembler-times "vmovdq\[au\]64\[^\{\n\]*%zmm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
10
11 __attribute__((noipa)) void
f1(char * __restrict dst,char * __restrict src1,char * __restrict src2)12 f1 (char *__restrict dst, char *__restrict src1, char *__restrict src2)
13 {
14 for (int i = 0; i != 64; i++)
15 dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
16 }
17
18 __attribute__((noipa)) void
f2(unsigned char * __restrict dst,unsigned char * __restrict src1,unsigned char * __restrict src2)19 f2 (unsigned char *__restrict dst, unsigned char *__restrict src1,
20 unsigned char *__restrict src2)
21 {
22 for (int i = 0; i != 64; i++)
23 dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
24 }
25
26 __attribute__((noipa)) void
f3(char * __restrict dst,char * __restrict src1,char * __restrict src2)27 f3 (char *__restrict dst, char *__restrict src1, char *__restrict src2)
28 {
29 for (int i = 0; i != 64; i++)
30 dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
31 }
32
33 __attribute__((noipa)) void
f4(unsigned char * __restrict dst,unsigned char * __restrict src1,unsigned char * __restrict src2)34 f4 (unsigned char *__restrict dst, unsigned char *__restrict src1,
35 unsigned char *__restrict src2)
36 {
37 for (int i = 0; i != 64; i++)
38 dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
39 }
40
41 __attribute__((noipa)) void
f5(short * __restrict dst,short * __restrict src1,short * __restrict src2)42 f5 (short *__restrict dst, short *__restrict src1, short *__restrict src2)
43 {
44 for (int i = 0; i != 32; i++)
45 dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
46 }
47
48 __attribute__((noipa)) void
f6(unsigned short * __restrict dst,unsigned short * __restrict src1,unsigned short * __restrict src2)49 f6 (unsigned short *__restrict dst, unsigned short *__restrict src1,
50 unsigned short *__restrict src2)
51 {
52 for (int i = 0; i != 32; i++)
53 dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
54 }
55
56 __attribute__((noipa)) void
f7(short * __restrict dst,short * __restrict src1,short * __restrict src2)57 f7 (short *__restrict dst, short *__restrict src1, short *__restrict src2)
58 {
59 for (int i = 0; i != 32; i++)
60 dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
61 }
62
63 __attribute__((noipa)) void
f8(unsigned short * __restrict dst,unsigned short * __restrict src1,unsigned short * __restrict src2)64 f8 (unsigned short *__restrict dst, unsigned short *__restrict src1,
65 unsigned short *__restrict src2)
66 {
67 for (int i = 0; i != 32; i++)
68 dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
69 }
70
71 __attribute__((noipa)) void
f9(int * __restrict dst,int * __restrict src1,int * __restrict src2)72 f9 (int *__restrict dst, int *__restrict src1, int *__restrict src2)
73 {
74 for (int i = 0; i != 16; i++)
75 dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
76 }
77
78 __attribute__((noipa)) void
f10(unsigned int * __restrict dst,unsigned int * __restrict src1,unsigned int * __restrict src2)79 f10 (unsigned int *__restrict dst, unsigned int *__restrict src1,
80 unsigned int *__restrict src2)
81 {
82 for (int i = 0; i != 16; i++)
83 dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
84 }
85
86 __attribute__((noipa)) void
f11(int * __restrict dst,int * __restrict src1,int * __restrict src2)87 f11 (int *__restrict dst, int *__restrict src1, int *__restrict src2)
88 {
89 for (int i = 0; i != 16; i++)
90 dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
91 }
92
93 __attribute__((noipa)) void
f12(unsigned int * __restrict dst,unsigned int * __restrict src1,unsigned int * __restrict src2)94 f12 (unsigned int *__restrict dst, unsigned int *__restrict src1,
95 unsigned int *__restrict src2)
96 {
97 for (int i = 0; i != 16; i++)
98 dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
99 }
100
101 __attribute__((noipa)) void
f13(long long int * __restrict dst,long long int * __restrict src1,long long int * __restrict src2)102 f13 (long long int *__restrict dst, long long int *__restrict src1,
103 long long int *__restrict src2)
104 {
105 for (int i = 0; i != 8; i++)
106 dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
107 }
108
109 __attribute__((noipa)) void
f14(unsigned long long int * __restrict dst,unsigned long long int * __restrict src1,unsigned long long int * __restrict src2)110 f14 (unsigned long long int *__restrict dst,
111 unsigned long long int *__restrict src1,
112 unsigned long long int *__restrict src2)
113 {
114 for (int i = 0; i != 8; i++)
115 dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
116 }
117
118 __attribute__((noipa)) void
f15(long long int * __restrict dst,long long int * __restrict src1,long long int * __restrict src2)119 f15 (long long int *__restrict dst, long long int *__restrict src1,
120 long long int *__restrict src2)
121 {
122 for (int i = 0; i != 8; i++)
123 dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
124 }
125
126 __attribute__((noipa)) void
f16(unsigned long long int * __restrict dst,unsigned long long int * __restrict src1,unsigned long long int * __restrict src2)127 f16 (unsigned long long int *__restrict dst,
128 unsigned long long int *__restrict src1,
129 unsigned long long int *__restrict src2)
130 {
131 for (int i = 0; i != 8; i++)
132 dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
133 }
134