summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/avx512bw-pr103750-2.c
blob: 7303f5403ba860a150813077dc445bff70d97ef4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
/* PR target/103750 */
/* { dg-do compile }  */
/* { dg-options "-O2 -mavx512dq -mavx512bw -mavx512vl" } */
/* { dg-final { scan-assembler-not "kmov" { xfail ia32 } } } */
/* xfail need to be fixed.  */

#include <immintrin.h>
extern __m128i* pi128;
extern __m256i* pi256;
extern __m512i* pi512;

extern char a, b;
void
foo ()
{
  __mmask16 mask1 = _mm_cmpeq_epu8_mask (pi128[0], pi128[1]);
  __mmask16 mask2 = _mm_cmpeq_epu8_mask (pi128[2], pi128[3]);
  a = _kortestz_mask32_u8 (mask1, mask2);
  b = _kortestz_mask16_u8 (mask1, mask2);
}

void
foo1 ()
{
  __mmask16 mask1 = _mm_cmpeq_epu8_mask (pi128[0], pi128[1]);
  __mmask16 mask2 = _mm_cmpeq_epu8_mask (pi128[2], pi128[3]);
  a = _kortestz_mask64_u8 (mask1, mask2);
  b = _kortestz_mask16_u8 (mask1, mask2);
}

void
foo2 ()
{
  __mmask32 mask1 = _mm256_cmpeq_epu8_mask (pi256[0], pi256[1]);
  __mmask32 mask2 = _mm256_cmpeq_epu8_mask (pi256[2], pi256[3]);
  a = _kortestz_mask64_u8 (mask1, mask2);
  b = _kortestz_mask32_u8 (mask1, mask2);
}

void
foo3 ()
{
  __mmask8 mask1 = _mm_cmpeq_epu16_mask (pi128[0], pi128[1]);
  __mmask8 mask2 = _mm_cmpeq_epu16_mask (pi128[1], pi128[2]);
  a = _kortestz_mask16_u8 (mask1, mask2);
  b = _kortestz_mask8_u8 (mask1, mask2);
}

void
foo4 ()
{
  __mmask8 mask1 = _mm_cmpeq_epu16_mask (pi128[0], pi128[1]);
  __mmask8 mask2 = _mm_cmpeq_epu16_mask (pi128[1], pi128[2]);
  a = _kortestz_mask32_u8 (mask1, mask2);
  b = _kortestz_mask8_u8 (mask1, mask2);
}

void
foo5 ()
{
  __mmask8 mask1 = _mm_cmpeq_epu16_mask (pi128[0], pi128[1]);
  __mmask8 mask2 = _mm_cmpeq_epu16_mask (pi128[1], pi128[2]);
  a = _kortestz_mask64_u8 (mask1, mask2);
  b = _kortestz_mask8_u8 (mask1, mask2);
}

void
foo6 ()
{
  __mmask16 mask1 = _mm256_cmpeq_epu16_mask (pi256[0], pi256[1]);
  __mmask16 mask2 = _mm256_cmpeq_epu16_mask (pi256[2], pi256[3]);
  a = _kortestz_mask32_u8 (mask1, mask2);
  b = _kortestz_mask16_u8 (mask1, mask2);
}

void
foo7 ()
{
  __mmask16 mask1 = _mm256_cmpeq_epu16_mask (pi256[0], pi256[1]);
  __mmask16 mask2 = _mm256_cmpeq_epu16_mask (pi256[2], pi256[3]);
  a = _kortestz_mask64_u8 (mask1, mask2);
  b = _kortestz_mask16_u8 (mask1, mask2);
}

void
foo8 ()
{
  __mmask32 mask1 = _mm512_cmpeq_epu16_mask (pi512[0], pi512[1]);
  __mmask32 mask2 = _mm512_cmpeq_epu16_mask (pi512[2], pi512[3]);
  a = _kortestz_mask64_u8 (mask1, mask2);
  b = _kortestz_mask32_u8 (mask1, mask2);
}

void
sign_foo ()
{
  __mmask16 mask1 = _mm_cmpeq_epi8_mask (pi128[0], pi128[1]);
  __mmask16 mask2 = _mm_cmpeq_epi8_mask (pi128[2], pi128[3]);
  a = _kortestz_mask32_u8 (mask1, mask2);
  b = _kortestz_mask16_u8 (mask1, mask2);
}

void
sign_foo1 ()
{
  __mmask16 mask1 = _mm_cmpeq_epi8_mask (pi128[0], pi128[1]);
  __mmask16 mask2 = _mm_cmpeq_epi8_mask (pi128[2], pi128[3]);
  a = _kortestz_mask64_u8 (mask1, mask2);
  b = _kortestz_mask16_u8 (mask1, mask2);
}

void
sign_foo2 ()
{
  __mmask32 mask1 = _mm256_cmpeq_epi8_mask (pi256[0], pi256[1]);
  __mmask32 mask2 = _mm256_cmpeq_epi8_mask (pi256[2], pi256[3]);
  a = _kortestz_mask64_u8 (mask1, mask2);
  b = _kortestz_mask32_u8 (mask1, mask2);
}

void
sign_foo3 ()
{
  __mmask8 mask1 = _mm_cmpeq_epi16_mask (pi128[0], pi128[1]);
  __mmask8 mask2 = _mm_cmpeq_epi16_mask (pi128[1], pi128[2]);
  a = _kortestz_mask16_u8 (mask1, mask2);
  b = _kortestz_mask8_u8 (mask1, mask2);
}

void
sign_foo4 ()
{
  __mmask8 mask1 = _mm_cmpeq_epi16_mask (pi128[0], pi128[1]);
  __mmask8 mask2 = _mm_cmpeq_epi16_mask (pi128[1], pi128[2]);
  a = _kortestz_mask32_u8 (mask1, mask2);
  b = _kortestz_mask8_u8 (mask1, mask2);
}

void
sign_foo5 ()
{
  __mmask8 mask1 = _mm_cmpeq_epi16_mask (pi128[0], pi128[1]);
  __mmask8 mask2 = _mm_cmpeq_epi16_mask (pi128[1], pi128[2]);
  a = _kortestz_mask64_u8 (mask1, mask2);
  b = _kortestz_mask8_u8 (mask1, mask2);
}

void
sign_foo6 ()
{
  __mmask16 mask1 = _mm256_cmpeq_epi16_mask (pi256[0], pi256[1]);
  __mmask16 mask2 = _mm256_cmpeq_epi16_mask (pi256[2], pi256[3]);
  a = _kortestz_mask32_u8 (mask1, mask2);
  b = _kortestz_mask16_u8 (mask1, mask2);
}

void
sign_foo7 ()
{
  __mmask16 mask1 = _mm256_cmpeq_epi16_mask (pi256[0], pi256[1]);
  __mmask16 mask2 = _mm256_cmpeq_epi16_mask (pi256[2], pi256[3]);
  a = _kortestz_mask64_u8 (mask1, mask2);
  b = _kortestz_mask16_u8 (mask1, mask2);
}

void
sign_foo8 ()
{
  __mmask32 mask1 = _mm512_cmpeq_epi16_mask (pi512[0], pi512[1]);
  __mmask32 mask2 = _mm512_cmpeq_epi16_mask (pi512[2], pi512[3]);
  a = _kortestz_mask64_u8 (mask1, mask2);
  b = _kortestz_mask32_u8 (mask1, mask2);
}