1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512bw -emit-llvm -o - -Werror | FileCheck %s 2 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512bw -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s 3 4 // Don't include mm_malloc.h, it's system specific. 5 #define __MM_MALLOC_H 6 7 #include <immintrin.h> 8 9 __mmask64 test_mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) { 10 // CHECK-LABEL: @test_mm512_cmpeq_epi8_mask 11 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} 12 return (__mmask64)_mm512_cmpeq_epi8_mask(__a, __b); 13 } 14 15 __mmask64 test_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 16 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi8_mask 17 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} 18 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 19 return (__mmask64)_mm512_mask_cmpeq_epi8_mask(__u, __a, __b); 20 } 21 22 __mmask32 test_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) { 23 // CHECK-LABEL: @test_mm512_cmpeq_epi16_mask 24 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} 25 return (__mmask32)_mm512_cmpeq_epi16_mask(__a, __b); 26 } 27 28 __mmask32 test_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 29 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi16_mask 30 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} 31 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 32 return (__mmask32)_mm512_mask_cmpeq_epi16_mask(__u, __a, __b); 33 } 34 35 __mmask64 test_mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) { 36 // CHECK-LABEL: @test_mm512_cmpgt_epi8_mask 37 // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}} 38 return (__mmask64)_mm512_cmpgt_epi8_mask(__a, __b); 39 } 40 41 __mmask64 test_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 42 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi8_mask 43 // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}} 44 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 45 return (__mmask64)_mm512_mask_cmpgt_epi8_mask(__u, __a, __b); 46 } 47 48 __mmask32 test_mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) { 49 // CHECK-LABEL: @test_mm512_cmpgt_epi16_mask 50 // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}} 51 return (__mmask32)_mm512_cmpgt_epi16_mask(__a, __b); 52 } 53 54 __mmask32 test_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 55 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi16_mask 56 // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}} 57 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 58 return (__mmask32)_mm512_mask_cmpgt_epi16_mask(__u, __a, __b); 59 } 60 61 __mmask64 test_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) { 62 // CHECK-LABEL: @test_mm512_cmpeq_epu8_mask 63 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} 64 return (__mmask64)_mm512_cmpeq_epu8_mask(__a, __b); 65 } 66 67 __mmask64 test_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 68 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu8_mask 69 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} 70 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 71 return (__mmask64)_mm512_mask_cmpeq_epu8_mask(__u, __a, __b); 72 } 73 74 __mmask32 test_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) { 75 // CHECK-LABEL: @test_mm512_cmpeq_epu16_mask 76 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} 77 return (__mmask32)_mm512_cmpeq_epu16_mask(__a, __b); 78 } 79 80 __mmask32 test_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 81 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu16_mask 82 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} 83 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 84 return (__mmask32)_mm512_mask_cmpeq_epu16_mask(__u, __a, __b); 85 } 86 87 __mmask64 test_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) { 88 // CHECK-LABEL: @test_mm512_cmpgt_epu8_mask 89 // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}} 90 return (__mmask64)_mm512_cmpgt_epu8_mask(__a, __b); 91 } 92 93 __mmask64 test_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 94 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu8_mask 95 // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}} 96 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 97 return (__mmask64)_mm512_mask_cmpgt_epu8_mask(__u, __a, __b); 98 } 99 100 __mmask32 test_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) { 101 // CHECK-LABEL: @test_mm512_cmpgt_epu16_mask 102 // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}} 103 return (__mmask32)_mm512_cmpgt_epu16_mask(__a, __b); 104 } 105 106 __mmask32 test_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 107 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu16_mask 108 // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}} 109 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 110 return (__mmask32)_mm512_mask_cmpgt_epu16_mask(__u, __a, __b); 111 } 112 113 __mmask64 test_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) { 114 // CHECK-LABEL: @test_mm512_cmpge_epi8_mask 115 // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}} 116 return (__mmask64)_mm512_cmpge_epi8_mask(__a, __b); 117 } 118 119 __mmask64 test_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 120 // CHECK-LABEL: @test_mm512_mask_cmpge_epi8_mask 121 // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}} 122 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 123 return (__mmask64)_mm512_mask_cmpge_epi8_mask(__u, __a, __b); 124 } 125 126 __mmask64 test_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) { 127 // CHECK-LABEL: @test_mm512_cmpge_epu8_mask 128 // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}} 129 return (__mmask64)_mm512_cmpge_epu8_mask(__a, __b); 130 } 131 132 __mmask64 test_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 133 // CHECK-LABEL: @test_mm512_mask_cmpge_epu8_mask 134 // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}} 135 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 136 return (__mmask64)_mm512_mask_cmpge_epu8_mask(__u, __a, __b); 137 } 138 139 __mmask32 test_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) { 140 // CHECK-LABEL: @test_mm512_cmpge_epi16_mask 141 // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}} 142 return (__mmask32)_mm512_cmpge_epi16_mask(__a, __b); 143 } 144 145 __mmask32 test_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 146 // CHECK-LABEL: @test_mm512_mask_cmpge_epi16_mask 147 // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}} 148 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 149 return (__mmask32)_mm512_mask_cmpge_epi16_mask(__u, __a, __b); 150 } 151 152 __mmask32 test_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) { 153 // CHECK-LABEL: @test_mm512_cmpge_epu16_mask 154 // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}} 155 return (__mmask32)_mm512_cmpge_epu16_mask(__a, __b); 156 } 157 158 __mmask32 test_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 159 // CHECK-LABEL: @test_mm512_mask_cmpge_epu16_mask 160 // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}} 161 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 162 return (__mmask32)_mm512_mask_cmpge_epu16_mask(__u, __a, __b); 163 } 164 165 __mmask64 test_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) { 166 // CHECK-LABEL: @test_mm512_cmple_epi8_mask 167 // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}} 168 return (__mmask64)_mm512_cmple_epi8_mask(__a, __b); 169 } 170 171 __mmask64 test_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 172 // CHECK-LABEL: @test_mm512_mask_cmple_epi8_mask 173 // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}} 174 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 175 return (__mmask64)_mm512_mask_cmple_epi8_mask(__u, __a, __b); 176 } 177 178 __mmask64 test_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) { 179 // CHECK-LABEL: @test_mm512_cmple_epu8_mask 180 // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}} 181 return (__mmask64)_mm512_cmple_epu8_mask(__a, __b); 182 } 183 184 __mmask64 test_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 185 // CHECK-LABEL: @test_mm512_mask_cmple_epu8_mask 186 // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}} 187 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 188 return (__mmask64)_mm512_mask_cmple_epu8_mask(__u, __a, __b); 189 } 190 191 __mmask32 test_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) { 192 // CHECK-LABEL: @test_mm512_cmple_epi16_mask 193 // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}} 194 return (__mmask32)_mm512_cmple_epi16_mask(__a, __b); 195 } 196 197 __mmask32 test_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 198 // CHECK-LABEL: @test_mm512_mask_cmple_epi16_mask 199 // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}} 200 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 201 return (__mmask32)_mm512_mask_cmple_epi16_mask(__u, __a, __b); 202 } 203 204 __mmask32 test_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) { 205 // CHECK-LABEL: @test_mm512_cmple_epu16_mask 206 // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}} 207 return (__mmask32)_mm512_cmple_epu16_mask(__a, __b); 208 } 209 210 __mmask32 test_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 211 // CHECK-LABEL: @test_mm512_mask_cmple_epu16_mask 212 // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}} 213 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 214 return (__mmask32)_mm512_mask_cmple_epu16_mask(__u, __a, __b); 215 } 216 217 __mmask64 test_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) { 218 // CHECK-LABEL: @test_mm512_cmplt_epi8_mask 219 // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}} 220 return (__mmask64)_mm512_cmplt_epi8_mask(__a, __b); 221 } 222 223 __mmask64 test_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 224 // CHECK-LABEL: @test_mm512_mask_cmplt_epi8_mask 225 // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}} 226 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 227 return (__mmask64)_mm512_mask_cmplt_epi8_mask(__u, __a, __b); 228 } 229 230 __mmask64 test_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) { 231 // CHECK-LABEL: @test_mm512_cmplt_epu8_mask 232 // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}} 233 return (__mmask64)_mm512_cmplt_epu8_mask(__a, __b); 234 } 235 236 __mmask64 test_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 237 // CHECK-LABEL: @test_mm512_mask_cmplt_epu8_mask 238 // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}} 239 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 240 return (__mmask64)_mm512_mask_cmplt_epu8_mask(__u, __a, __b); 241 } 242 243 __mmask32 test_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) { 244 // CHECK-LABEL: @test_mm512_cmplt_epi16_mask 245 // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}} 246 return (__mmask32)_mm512_cmplt_epi16_mask(__a, __b); 247 } 248 249 __mmask32 test_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 250 // CHECK-LABEL: @test_mm512_mask_cmplt_epi16_mask 251 // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}} 252 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 253 return (__mmask32)_mm512_mask_cmplt_epi16_mask(__u, __a, __b); 254 } 255 256 __mmask32 test_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) { 257 // CHECK-LABEL: @test_mm512_cmplt_epu16_mask 258 // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}} 259 return (__mmask32)_mm512_cmplt_epu16_mask(__a, __b); 260 } 261 262 __mmask32 test_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 263 // CHECK-LABEL: @test_mm512_mask_cmplt_epu16_mask 264 // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}} 265 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 266 return (__mmask32)_mm512_mask_cmplt_epu16_mask(__u, __a, __b); 267 } 268 269 __mmask64 test_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) { 270 // CHECK-LABEL: @test_mm512_cmpneq_epi8_mask 271 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}} 272 return (__mmask64)_mm512_cmpneq_epi8_mask(__a, __b); 273 } 274 275 __mmask64 test_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 276 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi8_mask 277 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}} 278 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 279 return (__mmask64)_mm512_mask_cmpneq_epi8_mask(__u, __a, __b); 280 } 281 282 __mmask64 test_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) { 283 // CHECK-LABEL: @test_mm512_cmpneq_epu8_mask 284 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}} 285 return (__mmask64)_mm512_cmpneq_epu8_mask(__a, __b); 286 } 287 288 __mmask64 test_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 289 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu8_mask 290 // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}} 291 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 292 return (__mmask64)_mm512_mask_cmpneq_epu8_mask(__u, __a, __b); 293 } 294 295 __mmask32 test_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) { 296 // CHECK-LABEL: @test_mm512_cmpneq_epi16_mask 297 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}} 298 return (__mmask32)_mm512_cmpneq_epi16_mask(__a, __b); 299 } 300 301 __mmask32 test_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 302 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi16_mask 303 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}} 304 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 305 return (__mmask32)_mm512_mask_cmpneq_epi16_mask(__u, __a, __b); 306 } 307 308 __mmask32 test_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) { 309 // CHECK-LABEL: @test_mm512_cmpneq_epu16_mask 310 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}} 311 return (__mmask32)_mm512_cmpneq_epu16_mask(__a, __b); 312 } 313 314 __mmask32 test_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 315 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu16_mask 316 // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}} 317 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 318 return (__mmask32)_mm512_mask_cmpneq_epu16_mask(__u, __a, __b); 319 } 320 321 __mmask64 test_mm512_cmp_epi8_mask(__m512i __a, __m512i __b) { 322 // CHECK-LABEL: @test_mm512_cmp_epi8_mask 323 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} 324 return (__mmask64)_mm512_cmp_epi8_mask(__a, __b, 0); 325 } 326 327 __mmask64 test_mm512_mask_cmp_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 328 // CHECK-LABEL: @test_mm512_mask_cmp_epi8_mask 329 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} 330 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 331 return (__mmask64)_mm512_mask_cmp_epi8_mask(__u, __a, __b, 0); 332 } 333 334 __mmask64 test_mm512_cmp_epu8_mask(__m512i __a, __m512i __b) { 335 // CHECK-LABEL: @test_mm512_cmp_epu8_mask 336 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} 337 return (__mmask64)_mm512_cmp_epu8_mask(__a, __b, 0); 338 } 339 340 __mmask64 test_mm512_mask_cmp_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 341 // CHECK-LABEL: @test_mm512_mask_cmp_epu8_mask 342 // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}} 343 // CHECK: and <64 x i1> %{{.*}}, %{{.*}} 344 return (__mmask64)_mm512_mask_cmp_epu8_mask(__u, __a, __b, 0); 345 } 346 347 __mmask32 test_mm512_cmp_epi16_mask(__m512i __a, __m512i __b) { 348 // CHECK-LABEL: @test_mm512_cmp_epi16_mask 349 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} 350 return (__mmask32)_mm512_cmp_epi16_mask(__a, __b, 0); 351 } 352 353 __mmask32 test_mm512_mask_cmp_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 354 // CHECK-LABEL: @test_mm512_mask_cmp_epi16_mask 355 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} 356 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 357 return (__mmask32)_mm512_mask_cmp_epi16_mask(__u, __a, __b, 0); 358 } 359 360 __mmask32 test_mm512_cmp_epu16_mask(__m512i __a, __m512i __b) { 361 // CHECK-LABEL: @test_mm512_cmp_epu16_mask 362 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} 363 return (__mmask32)_mm512_cmp_epu16_mask(__a, __b, 0); 364 } 365 366 __mmask32 test_mm512_mask_cmp_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 367 // CHECK-LABEL: @test_mm512_mask_cmp_epu16_mask 368 // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}} 369 // CHECK: and <32 x i1> %{{.*}}, %{{.*}} 370 return (__mmask32)_mm512_mask_cmp_epu16_mask(__u, __a, __b, 0); 371 } 372 373 __m512i test_mm512_add_epi8 (__m512i __A, __m512i __B) { 374 //CHECK-LABEL: @test_mm512_add_epi8 375 //CHECK: add <64 x i8> 376 return _mm512_add_epi8(__A,__B); 377 } 378 379 __m512i test_mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 380 //CHECK-LABEL: @test_mm512_mask_add_epi8 381 //CHECK: @llvm.x86.avx512.mask.padd.b.512 382 return _mm512_mask_add_epi8(__W, __U, __A, __B); 383 } 384 385 __m512i test_mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) { 386 //CHECK-LABEL: @test_mm512_maskz_add_epi8 387 //CHECK: @llvm.x86.avx512.mask.padd.b.512 388 return _mm512_maskz_add_epi8(__U, __A, __B); 389 } 390 391 __m512i test_mm512_sub_epi8 (__m512i __A, __m512i __B) { 392 //CHECK-LABEL: @test_mm512_sub_epi8 393 //CHECK: sub <64 x i8> 394 return _mm512_sub_epi8(__A, __B); 395 } 396 397 __m512i test_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 398 //CHECK-LABEL: @test_mm512_mask_sub_epi8 399 //CHECK: @llvm.x86.avx512.mask.psub.b.512 400 return _mm512_mask_sub_epi8(__W, __U, __A, __B); 401 } 402 403 __m512i test_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) { 404 //CHECK-LABEL: @test_mm512_maskz_sub_epi8 405 //CHECK: @llvm.x86.avx512.mask.psub.b.512 406 return _mm512_maskz_sub_epi8(__U, __A, __B); 407 } 408 409 __m512i test_mm512_add_epi16 (__m512i __A, __m512i __B) { 410 //CHECK-LABEL: @test_mm512_add_epi16 411 //CHECK: add <32 x i16> 412 return _mm512_add_epi16(__A, __B); 413 } 414 415 __m512i test_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 416 //CHECK-LABEL: @test_mm512_mask_add_epi16 417 //CHECK: @llvm.x86.avx512.mask.padd.w.512 418 return _mm512_mask_add_epi16(__W, __U, __A, __B); 419 } 420 421 __m512i test_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) { 422 //CHECK-LABEL: @test_mm512_maskz_add_epi16 423 //CHECK: @llvm.x86.avx512.mask.padd.w.512 424 return _mm512_maskz_add_epi16(__U, __A, __B); 425 } 426 427 __m512i test_mm512_sub_epi16 (__m512i __A, __m512i __B) { 428 //CHECK-LABEL: @test_mm512_sub_epi16 429 //CHECK: sub <32 x i16> 430 return _mm512_sub_epi16(__A, __B); 431 } 432 433 __m512i test_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 434 //CHECK-LABEL: @test_mm512_mask_sub_epi16 435 //CHECK: @llvm.x86.avx512.mask.psub.w.512 436 return _mm512_mask_sub_epi16(__W, __U, __A, __B); 437 } 438 439 __m512i test_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) { 440 //CHECK-LABEL: @test_mm512_maskz_sub_epi16 441 //CHECK: @llvm.x86.avx512.mask.psub.w.512 442 return _mm512_maskz_sub_epi16(__U, __A, __B); 443 } 444 445 __m512i test_mm512_mullo_epi16 (__m512i __A, __m512i __B) { 446 //CHECK-LABEL: @test_mm512_mullo_epi16 447 //CHECK: mul <32 x i16> 448 return _mm512_mullo_epi16(__A, __B); 449 } 450 451 __m512i test_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 452 //CHECK-LABEL: @test_mm512_mask_mullo_epi16 453 //CHECK: @llvm.x86.avx512.mask.pmull.w.512 454 return _mm512_mask_mullo_epi16(__W, __U, __A, __B); 455 } 456 457 __m512i test_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) { 458 //CHECK-LABEL: @test_mm512_maskz_mullo_epi16 459 //CHECK: @llvm.x86.avx512.mask.pmull.w.512 460 return _mm512_maskz_mullo_epi16(__U, __A, __B); 461 } 462 463 __m512i test_mm512_mask_blend_epi8(__mmask64 __U, __m512i __A, __m512i __W) { 464 // CHECK-LABEL: @test_mm512_mask_blend_epi8 465 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}} 466 return _mm512_mask_blend_epi8(__U,__A,__W); 467 } 468 __m512i test_mm512_mask_blend_epi16(__mmask32 __U, __m512i __A, __m512i __W) { 469 // CHECK-LABEL: @test_mm512_mask_blend_epi16 470 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 471 return _mm512_mask_blend_epi16(__U,__A,__W); 472 } 473 __m512i test_mm512_abs_epi8(__m512i __A) { 474 // CHECK-LABEL: @test_mm512_abs_epi8 475 // CHECK: @llvm.x86.avx512.mask.pabs.b.512 476 return _mm512_abs_epi8(__A); 477 } 478 __m512i test_mm512_mask_abs_epi8(__m512i __W, __mmask64 __U, __m512i __A) { 479 // CHECK-LABEL: @test_mm512_mask_abs_epi8 480 // CHECK: @llvm.x86.avx512.mask.pabs.b.512 481 return _mm512_mask_abs_epi8(__W,__U,__A); 482 } 483 __m512i test_mm512_maskz_abs_epi8(__mmask64 __U, __m512i __A) { 484 // CHECK-LABEL: @test_mm512_maskz_abs_epi8 485 // CHECK: @llvm.x86.avx512.mask.pabs.b.512 486 return _mm512_maskz_abs_epi8(__U,__A); 487 } 488 __m512i test_mm512_abs_epi16(__m512i __A) { 489 // CHECK-LABEL: @test_mm512_abs_epi16 490 // CHECK: @llvm.x86.avx512.mask.pabs.w.512 491 return _mm512_abs_epi16(__A); 492 } 493 __m512i test_mm512_mask_abs_epi16(__m512i __W, __mmask32 __U, __m512i __A) { 494 // CHECK-LABEL: @test_mm512_mask_abs_epi16 495 // CHECK: @llvm.x86.avx512.mask.pabs.w.512 496 return _mm512_mask_abs_epi16(__W,__U,__A); 497 } 498 __m512i test_mm512_maskz_abs_epi16(__mmask32 __U, __m512i __A) { 499 // CHECK-LABEL: @test_mm512_maskz_abs_epi16 500 // CHECK: @llvm.x86.avx512.mask.pabs.w.512 501 return _mm512_maskz_abs_epi16(__U,__A); 502 } 503 __m512i test_mm512_packs_epi32(__m512i __A, __m512i __B) { 504 // CHECK-LABEL: @test_mm512_packs_epi32 505 // CHECK: @llvm.x86.avx512.mask.packssdw.512 506 return _mm512_packs_epi32(__A,__B); 507 } 508 __m512i test_mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B) { 509 // CHECK-LABEL: @test_mm512_maskz_packs_epi32 510 // CHECK: @llvm.x86.avx512.mask.packssdw.512 511 return _mm512_maskz_packs_epi32(__M,__A,__B); 512 } 513 __m512i test_mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { 514 // CHECK-LABEL: @test_mm512_mask_packs_epi32 515 // CHECK: @llvm.x86.avx512.mask.packssdw.512 516 return _mm512_mask_packs_epi32(__W,__M,__A,__B); 517 } 518 __m512i test_mm512_packs_epi16(__m512i __A, __m512i __B) { 519 // CHECK-LABEL: @test_mm512_packs_epi16 520 // CHECK: @llvm.x86.avx512.mask.packsswb.512 521 return _mm512_packs_epi16(__A,__B); 522 } 523 __m512i test_mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { 524 // CHECK-LABEL: @test_mm512_mask_packs_epi16 525 // CHECK: @llvm.x86.avx512.mask.packsswb.512 526 return _mm512_mask_packs_epi16(__W,__M,__A,__B); 527 } 528 __m512i test_mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B) { 529 // CHECK-LABEL: @test_mm512_maskz_packs_epi16 530 // CHECK: @llvm.x86.avx512.mask.packsswb.512 531 return _mm512_maskz_packs_epi16(__M,__A,__B); 532 } 533 __m512i test_mm512_packus_epi32(__m512i __A, __m512i __B) { 534 // CHECK-LABEL: @test_mm512_packus_epi32 535 // CHECK: @llvm.x86.avx512.mask.packusdw.512 536 return _mm512_packus_epi32(__A,__B); 537 } 538 __m512i test_mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B) { 539 // CHECK-LABEL: @test_mm512_maskz_packus_epi32 540 // CHECK: @llvm.x86.avx512.mask.packusdw.512 541 return _mm512_maskz_packus_epi32(__M,__A,__B); 542 } 543 __m512i test_mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { 544 // CHECK-LABEL: @test_mm512_mask_packus_epi32 545 // CHECK: @llvm.x86.avx512.mask.packusdw.512 546 return _mm512_mask_packus_epi32(__W,__M,__A,__B); 547 } 548 __m512i test_mm512_packus_epi16(__m512i __A, __m512i __B) { 549 // CHECK-LABEL: @test_mm512_packus_epi16 550 // CHECK: @llvm.x86.avx512.mask.packuswb.512 551 return _mm512_packus_epi16(__A,__B); 552 } 553 __m512i test_mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { 554 // CHECK-LABEL: @test_mm512_mask_packus_epi16 555 // CHECK: @llvm.x86.avx512.mask.packuswb.512 556 return _mm512_mask_packus_epi16(__W,__M,__A,__B); 557 } 558 __m512i test_mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B) { 559 // CHECK-LABEL: @test_mm512_maskz_packus_epi16 560 // CHECK: @llvm.x86.avx512.mask.packuswb.512 561 return _mm512_maskz_packus_epi16(__M,__A,__B); 562 } 563 __m512i test_mm512_adds_epi8(__m512i __A, __m512i __B) { 564 // CHECK-LABEL: @test_mm512_adds_epi8 565 // CHECK: @llvm.x86.avx512.mask.padds.b.512 566 return _mm512_adds_epi8(__A,__B); 567 } 568 __m512i test_mm512_mask_adds_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 569 // CHECK-LABEL: @test_mm512_mask_adds_epi8 570 // CHECK: @llvm.x86.avx512.mask.padds.b.512 571 return _mm512_mask_adds_epi8(__W,__U,__A,__B); 572 } 573 __m512i test_mm512_maskz_adds_epi8(__mmask64 __U, __m512i __A, __m512i __B) { 574 // CHECK-LABEL: @test_mm512_maskz_adds_epi8 575 // CHECK: @llvm.x86.avx512.mask.padds.b.512 576 return _mm512_maskz_adds_epi8(__U,__A,__B); 577 } 578 __m512i test_mm512_adds_epi16(__m512i __A, __m512i __B) { 579 // CHECK-LABEL: @test_mm512_adds_epi16 580 // CHECK: @llvm.x86.avx512.mask.padds.w.512 581 return _mm512_adds_epi16(__A,__B); 582 } 583 __m512i test_mm512_mask_adds_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 584 // CHECK-LABEL: @test_mm512_mask_adds_epi16 585 // CHECK: @llvm.x86.avx512.mask.padds.w.512 586 return _mm512_mask_adds_epi16(__W,__U,__A,__B); 587 } 588 __m512i test_mm512_maskz_adds_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 589 // CHECK-LABEL: @test_mm512_maskz_adds_epi16 590 // CHECK: @llvm.x86.avx512.mask.padds.w.512 591 return _mm512_maskz_adds_epi16(__U,__A,__B); 592 } 593 __m512i test_mm512_adds_epu8(__m512i __A, __m512i __B) { 594 // CHECK-LABEL: @test_mm512_adds_epu8 595 // CHECK: @llvm.x86.avx512.mask.paddus.b.512 596 return _mm512_adds_epu8(__A,__B); 597 } 598 __m512i test_mm512_mask_adds_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 599 // CHECK-LABEL: @test_mm512_mask_adds_epu8 600 // CHECK: @llvm.x86.avx512.mask.paddus.b.512 601 return _mm512_mask_adds_epu8(__W,__U,__A,__B); 602 } 603 __m512i test_mm512_maskz_adds_epu8(__mmask64 __U, __m512i __A, __m512i __B) { 604 // CHECK-LABEL: @test_mm512_maskz_adds_epu8 605 // CHECK: @llvm.x86.avx512.mask.paddus.b.512 606 return _mm512_maskz_adds_epu8(__U,__A,__B); 607 } 608 __m512i test_mm512_adds_epu16(__m512i __A, __m512i __B) { 609 // CHECK-LABEL: @test_mm512_adds_epu16 610 // CHECK: @llvm.x86.avx512.mask.paddus.w.512 611 return _mm512_adds_epu16(__A,__B); 612 } 613 __m512i test_mm512_mask_adds_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 614 // CHECK-LABEL: @test_mm512_mask_adds_epu16 615 // CHECK: @llvm.x86.avx512.mask.paddus.w.512 616 return _mm512_mask_adds_epu16(__W,__U,__A,__B); 617 } 618 __m512i test_mm512_maskz_adds_epu16(__mmask32 __U, __m512i __A, __m512i __B) { 619 // CHECK-LABEL: @test_mm512_maskz_adds_epu16 620 // CHECK: @llvm.x86.avx512.mask.paddus.w.512 621 return _mm512_maskz_adds_epu16(__U,__A,__B); 622 } 623 __m512i test_mm512_avg_epu8(__m512i __A, __m512i __B) { 624 // CHECK-LABEL: @test_mm512_avg_epu8 625 // CHECK: @llvm.x86.avx512.mask.pavg.b.512 626 return _mm512_avg_epu8(__A,__B); 627 } 628 __m512i test_mm512_mask_avg_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 629 // CHECK-LABEL: @test_mm512_mask_avg_epu8 630 // CHECK: @llvm.x86.avx512.mask.pavg.b.512 631 return _mm512_mask_avg_epu8(__W,__U,__A,__B); 632 } 633 __m512i test_mm512_maskz_avg_epu8(__mmask64 __U, __m512i __A, __m512i __B) { 634 // CHECK-LABEL: @test_mm512_maskz_avg_epu8 635 // CHECK: @llvm.x86.avx512.mask.pavg.b.512 636 return _mm512_maskz_avg_epu8(__U,__A,__B); 637 } 638 __m512i test_mm512_avg_epu16(__m512i __A, __m512i __B) { 639 // CHECK-LABEL: @test_mm512_avg_epu16 640 // CHECK: @llvm.x86.avx512.mask.pavg.w.512 641 return _mm512_avg_epu16(__A,__B); 642 } 643 __m512i test_mm512_mask_avg_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 644 // CHECK-LABEL: @test_mm512_mask_avg_epu16 645 // CHECK: @llvm.x86.avx512.mask.pavg.w.512 646 return _mm512_mask_avg_epu16(__W,__U,__A,__B); 647 } 648 __m512i test_mm512_maskz_avg_epu16(__mmask32 __U, __m512i __A, __m512i __B) { 649 // CHECK-LABEL: @test_mm512_maskz_avg_epu16 650 // CHECK: @llvm.x86.avx512.mask.pavg.w.512 651 return _mm512_maskz_avg_epu16(__U,__A,__B); 652 } 653 __m512i test_mm512_max_epi8(__m512i __A, __m512i __B) { 654 // CHECK-LABEL: @test_mm512_max_epi8 655 // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512 656 return _mm512_max_epi8(__A,__B); 657 } 658 __m512i test_mm512_maskz_max_epi8(__mmask64 __M, __m512i __A, __m512i __B) { 659 // CHECK-LABEL: @test_mm512_maskz_max_epi8 660 // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512 661 return _mm512_maskz_max_epi8(__M,__A,__B); 662 } 663 __m512i test_mm512_mask_max_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { 664 // CHECK-LABEL: @test_mm512_mask_max_epi8 665 // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512 666 return _mm512_mask_max_epi8(__W,__M,__A,__B); 667 } 668 __m512i test_mm512_max_epi16(__m512i __A, __m512i __B) { 669 // CHECK-LABEL: @test_mm512_max_epi16 670 // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512 671 return _mm512_max_epi16(__A,__B); 672 } 673 __m512i test_mm512_maskz_max_epi16(__mmask32 __M, __m512i __A, __m512i __B) { 674 // CHECK-LABEL: @test_mm512_maskz_max_epi16 675 // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512 676 return _mm512_maskz_max_epi16(__M,__A,__B); 677 } 678 __m512i test_mm512_mask_max_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { 679 // CHECK-LABEL: @test_mm512_mask_max_epi16 680 // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512 681 return _mm512_mask_max_epi16(__W,__M,__A,__B); 682 } 683 __m512i test_mm512_max_epu8(__m512i __A, __m512i __B) { 684 // CHECK-LABEL: @test_mm512_max_epu8 685 // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512 686 return _mm512_max_epu8(__A,__B); 687 } 688 __m512i test_mm512_maskz_max_epu8(__mmask64 __M, __m512i __A, __m512i __B) { 689 // CHECK-LABEL: @test_mm512_maskz_max_epu8 690 // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512 691 return _mm512_maskz_max_epu8(__M,__A,__B); 692 } 693 __m512i test_mm512_mask_max_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { 694 // CHECK-LABEL: @test_mm512_mask_max_epu8 695 // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512 696 return _mm512_mask_max_epu8(__W,__M,__A,__B); 697 } 698 __m512i test_mm512_max_epu16(__m512i __A, __m512i __B) { 699 // CHECK-LABEL: @test_mm512_max_epu16 700 // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512 701 return _mm512_max_epu16(__A,__B); 702 } 703 __m512i test_mm512_maskz_max_epu16(__mmask32 __M, __m512i __A, __m512i __B) { 704 // CHECK-LABEL: @test_mm512_maskz_max_epu16 705 // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512 706 return _mm512_maskz_max_epu16(__M,__A,__B); 707 } 708 __m512i test_mm512_mask_max_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { 709 // CHECK-LABEL: @test_mm512_mask_max_epu16 710 // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512 711 return _mm512_mask_max_epu16(__W,__M,__A,__B); 712 } 713 __m512i test_mm512_min_epi8(__m512i __A, __m512i __B) { 714 // CHECK-LABEL: @test_mm512_min_epi8 715 // CHECK: @llvm.x86.avx512.mask.pmins.b.512 716 return _mm512_min_epi8(__A,__B); 717 } 718 __m512i test_mm512_maskz_min_epi8(__mmask64 __M, __m512i __A, __m512i __B) { 719 // CHECK-LABEL: @test_mm512_maskz_min_epi8 720 // CHECK: @llvm.x86.avx512.mask.pmins.b.512 721 return _mm512_maskz_min_epi8(__M,__A,__B); 722 } 723 __m512i test_mm512_mask_min_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { 724 // CHECK-LABEL: @test_mm512_mask_min_epi8 725 // CHECK: @llvm.x86.avx512.mask.pmins.b.512 726 return _mm512_mask_min_epi8(__W,__M,__A,__B); 727 } 728 __m512i test_mm512_min_epi16(__m512i __A, __m512i __B) { 729 // CHECK-LABEL: @test_mm512_min_epi16 730 // CHECK: @llvm.x86.avx512.mask.pmins.w.512 731 return _mm512_min_epi16(__A,__B); 732 } 733 __m512i test_mm512_maskz_min_epi16(__mmask32 __M, __m512i __A, __m512i __B) { 734 // CHECK-LABEL: @test_mm512_maskz_min_epi16 735 // CHECK: @llvm.x86.avx512.mask.pmins.w.512 736 return _mm512_maskz_min_epi16(__M,__A,__B); 737 } 738 __m512i test_mm512_mask_min_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { 739 // CHECK-LABEL: @test_mm512_mask_min_epi16 740 // CHECK: @llvm.x86.avx512.mask.pmins.w.512 741 return _mm512_mask_min_epi16(__W,__M,__A,__B); 742 } 743 __m512i test_mm512_min_epu8(__m512i __A, __m512i __B) { 744 // CHECK-LABEL: @test_mm512_min_epu8 745 // CHECK: @llvm.x86.avx512.mask.pminu.b.512 746 return _mm512_min_epu8(__A,__B); 747 } 748 __m512i test_mm512_maskz_min_epu8(__mmask64 __M, __m512i __A, __m512i __B) { 749 // CHECK-LABEL: @test_mm512_maskz_min_epu8 750 // CHECK: @llvm.x86.avx512.mask.pminu.b.512 751 return _mm512_maskz_min_epu8(__M,__A,__B); 752 } 753 __m512i test_mm512_mask_min_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { 754 // CHECK-LABEL: @test_mm512_mask_min_epu8 755 // CHECK: @llvm.x86.avx512.mask.pminu.b.512 756 return _mm512_mask_min_epu8(__W,__M,__A,__B); 757 } 758 __m512i test_mm512_min_epu16(__m512i __A, __m512i __B) { 759 // CHECK-LABEL: @test_mm512_min_epu16 760 // CHECK: @llvm.x86.avx512.mask.pminu.w.512 761 return _mm512_min_epu16(__A,__B); 762 } 763 __m512i test_mm512_maskz_min_epu16(__mmask32 __M, __m512i __A, __m512i __B) { 764 // CHECK-LABEL: @test_mm512_maskz_min_epu16 765 // CHECK: @llvm.x86.avx512.mask.pminu.w.512 766 return _mm512_maskz_min_epu16(__M,__A,__B); 767 } 768 __m512i test_mm512_mask_min_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { 769 // CHECK-LABEL: @test_mm512_mask_min_epu16 770 // CHECK: @llvm.x86.avx512.mask.pminu.w.512 771 return _mm512_mask_min_epu16(__W,__M,__A,__B); 772 } 773 __m512i test_mm512_shuffle_epi8(__m512i __A, __m512i __B) { 774 // CHECK-LABEL: @test_mm512_shuffle_epi8 775 // CHECK: @llvm.x86.avx512.mask.pshuf.b.512 776 return _mm512_shuffle_epi8(__A,__B); 777 } 778 __m512i test_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 779 // CHECK-LABEL: @test_mm512_mask_shuffle_epi8 780 // CHECK: @llvm.x86.avx512.mask.pshuf.b.512 781 return _mm512_mask_shuffle_epi8(__W,__U,__A,__B); 782 } 783 __m512i test_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B) { 784 // CHECK-LABEL: @test_mm512_maskz_shuffle_epi8 785 // CHECK: @llvm.x86.avx512.mask.pshuf.b.512 786 return _mm512_maskz_shuffle_epi8(__U,__A,__B); 787 } 788 __m512i test_mm512_subs_epi8(__m512i __A, __m512i __B) { 789 // CHECK-LABEL: @test_mm512_subs_epi8 790 // CHECK: @llvm.x86.avx512.mask.psubs.b.512 791 return _mm512_subs_epi8(__A,__B); 792 } 793 __m512i test_mm512_mask_subs_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 794 // CHECK-LABEL: @test_mm512_mask_subs_epi8 795 // CHECK: @llvm.x86.avx512.mask.psubs.b.512 796 return _mm512_mask_subs_epi8(__W,__U,__A,__B); 797 } 798 __m512i test_mm512_maskz_subs_epi8(__mmask64 __U, __m512i __A, __m512i __B) { 799 // CHECK-LABEL: @test_mm512_maskz_subs_epi8 800 // CHECK: @llvm.x86.avx512.mask.psubs.b.512 801 return _mm512_maskz_subs_epi8(__U,__A,__B); 802 } 803 __m512i test_mm512_subs_epi16(__m512i __A, __m512i __B) { 804 // CHECK-LABEL: @test_mm512_subs_epi16 805 // CHECK: @llvm.x86.avx512.mask.psubs.w.512 806 return _mm512_subs_epi16(__A,__B); 807 } 808 __m512i test_mm512_mask_subs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 809 // CHECK-LABEL: @test_mm512_mask_subs_epi16 810 // CHECK: @llvm.x86.avx512.mask.psubs.w.512 811 return _mm512_mask_subs_epi16(__W,__U,__A,__B); 812 } 813 __m512i test_mm512_maskz_subs_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 814 // CHECK-LABEL: @test_mm512_maskz_subs_epi16 815 // CHECK: @llvm.x86.avx512.mask.psubs.w.512 816 return _mm512_maskz_subs_epi16(__U,__A,__B); 817 } 818 __m512i test_mm512_subs_epu8(__m512i __A, __m512i __B) { 819 // CHECK-LABEL: @test_mm512_subs_epu8 820 // CHECK: @llvm.x86.avx512.mask.psubus.b.512 821 return _mm512_subs_epu8(__A,__B); 822 } 823 __m512i test_mm512_mask_subs_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 824 // CHECK-LABEL: @test_mm512_mask_subs_epu8 825 // CHECK: @llvm.x86.avx512.mask.psubus.b.512 826 return _mm512_mask_subs_epu8(__W,__U,__A,__B); 827 } 828 __m512i test_mm512_maskz_subs_epu8(__mmask64 __U, __m512i __A, __m512i __B) { 829 // CHECK-LABEL: @test_mm512_maskz_subs_epu8 830 // CHECK: @llvm.x86.avx512.mask.psubus.b.512 831 return _mm512_maskz_subs_epu8(__U,__A,__B); 832 } 833 __m512i test_mm512_subs_epu16(__m512i __A, __m512i __B) { 834 // CHECK-LABEL: @test_mm512_subs_epu16 835 // CHECK: @llvm.x86.avx512.mask.psubus.w.512 836 return _mm512_subs_epu16(__A,__B); 837 } 838 __m512i test_mm512_mask_subs_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 839 // CHECK-LABEL: @test_mm512_mask_subs_epu16 840 // CHECK: @llvm.x86.avx512.mask.psubus.w.512 841 return _mm512_mask_subs_epu16(__W,__U,__A,__B); 842 } 843 __m512i test_mm512_maskz_subs_epu16(__mmask32 __U, __m512i __A, __m512i __B) { 844 // CHECK-LABEL: @test_mm512_maskz_subs_epu16 845 // CHECK: @llvm.x86.avx512.mask.psubus.w.512 846 return _mm512_maskz_subs_epu16(__U,__A,__B); 847 } 848 __m512i test_mm512_mask2_permutex2var_epi16(__m512i __A, __m512i __I, __mmask32 __U, __m512i __B) { 849 // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi16 850 // CHECK: @llvm.x86.avx512.mask.vpermi2var.hi.512 851 return _mm512_mask2_permutex2var_epi16(__A,__I,__U,__B); 852 } 853 __m512i test_mm512_permutex2var_epi16(__m512i __A, __m512i __I, __m512i __B) { 854 // CHECK-LABEL: @test_mm512_permutex2var_epi16 855 // CHECK: @llvm.x86.avx512.mask.vpermt2var.hi.512 856 return _mm512_permutex2var_epi16(__A,__I,__B); 857 } 858 __m512i test_mm512_mask_permutex2var_epi16(__m512i __A, __mmask32 __U, __m512i __I, __m512i __B) { 859 // CHECK-LABEL: @test_mm512_mask_permutex2var_epi16 860 // CHECK: @llvm.x86.avx512.mask.vpermt2var.hi.512 861 return _mm512_mask_permutex2var_epi16(__A,__U,__I,__B); 862 } 863 __m512i test_mm512_maskz_permutex2var_epi16(__mmask32 __U, __m512i __A, __m512i __I, __m512i __B) { 864 // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi16 865 // CHECK: @llvm.x86.avx512.maskz.vpermt2var.hi.512 866 return _mm512_maskz_permutex2var_epi16(__U,__A,__I,__B); 867 } 868 869 __m512i test_mm512_mulhrs_epi16(__m512i __A, __m512i __B) { 870 // CHECK-LABEL: @test_mm512_mulhrs_epi16 871 // CHECK: @llvm.x86.avx512.mask.pmul.hr.sw.512 872 return _mm512_mulhrs_epi16(__A,__B); 873 } 874 __m512i test_mm512_mask_mulhrs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 875 // CHECK-LABEL: @test_mm512_mask_mulhrs_epi16 876 // CHECK: @llvm.x86.avx512.mask.pmul.hr.sw.512 877 return _mm512_mask_mulhrs_epi16(__W,__U,__A,__B); 878 } 879 __m512i test_mm512_maskz_mulhrs_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 880 // CHECK-LABEL: @test_mm512_maskz_mulhrs_epi16 881 // CHECK: @llvm.x86.avx512.mask.pmul.hr.sw.512 882 return _mm512_maskz_mulhrs_epi16(__U,__A,__B); 883 } 884 __m512i test_mm512_mulhi_epi16(__m512i __A, __m512i __B) { 885 // CHECK-LABEL: @test_mm512_mulhi_epi16 886 // CHECK: @llvm.x86.avx512.mask.pmulh.w.512 887 return _mm512_mulhi_epi16(__A,__B); 888 } 889 __m512i test_mm512_mask_mulhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 890 // CHECK-LABEL: @test_mm512_mask_mulhi_epi16 891 // CHECK: @llvm.x86.avx512.mask.pmulh.w.512 892 return _mm512_mask_mulhi_epi16(__W,__U,__A,__B); 893 } 894 __m512i test_mm512_maskz_mulhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 895 // CHECK-LABEL: @test_mm512_maskz_mulhi_epi16 896 // CHECK: @llvm.x86.avx512.mask.pmulh.w.512 897 return _mm512_maskz_mulhi_epi16(__U,__A,__B); 898 } 899 __m512i test_mm512_mulhi_epu16(__m512i __A, __m512i __B) { 900 // CHECK-LABEL: @test_mm512_mulhi_epu16 901 // CHECK: @llvm.x86.avx512.mask.pmulhu.w.512 902 return _mm512_mulhi_epu16(__A,__B); 903 } 904 __m512i test_mm512_mask_mulhi_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 905 // CHECK-LABEL: @test_mm512_mask_mulhi_epu16 906 // CHECK: @llvm.x86.avx512.mask.pmulhu.w.512 907 return _mm512_mask_mulhi_epu16(__W,__U,__A,__B); 908 } 909 __m512i test_mm512_maskz_mulhi_epu16(__mmask32 __U, __m512i __A, __m512i __B) { 910 // CHECK-LABEL: @test_mm512_maskz_mulhi_epu16 911 // CHECK: @llvm.x86.avx512.mask.pmulhu.w.512 912 return _mm512_maskz_mulhi_epu16(__U,__A,__B); 913 } 914 915 __m512i test_mm512_maddubs_epi16(__m512i __X, __m512i __Y) { 916 // CHECK-LABEL: @test_mm512_maddubs_epi16 917 // CHECK: @llvm.x86.avx512.mask.pmaddubs.w.512 918 return _mm512_maddubs_epi16(__X,__Y); 919 } 920 __m512i test_mm512_mask_maddubs_epi16(__m512i __W, __mmask32 __U, __m512i __X, __m512i __Y) { 921 // CHECK-LABEL: @test_mm512_mask_maddubs_epi16 922 // CHECK: @llvm.x86.avx512.mask.pmaddubs.w.512 923 return _mm512_mask_maddubs_epi16(__W,__U,__X,__Y); 924 } 925 __m512i test_mm512_maskz_maddubs_epi16(__mmask32 __U, __m512i __X, __m512i __Y) { 926 // CHECK-LABEL: @test_mm512_maskz_maddubs_epi16 927 // CHECK: @llvm.x86.avx512.mask.pmaddubs.w.512 928 return _mm512_maskz_maddubs_epi16(__U,__X,__Y); 929 } 930 __m512i test_mm512_madd_epi16(__m512i __A, __m512i __B) { 931 // CHECK-LABEL: @test_mm512_madd_epi16 932 // CHECK: @llvm.x86.avx512.mask.pmaddw.d.512 933 return _mm512_madd_epi16(__A,__B); 934 } 935 __m512i test_mm512_mask_madd_epi16(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { 936 // CHECK-LABEL: @test_mm512_mask_madd_epi16 937 // CHECK: @llvm.x86.avx512.mask.pmaddw.d.512 938 return _mm512_mask_madd_epi16(__W,__U,__A,__B); 939 } 940 __m512i test_mm512_maskz_madd_epi16(__mmask16 __U, __m512i __A, __m512i __B) { 941 // CHECK-LABEL: @test_mm512_maskz_madd_epi16 942 // CHECK: @llvm.x86.avx512.mask.pmaddw.d.512 943 return _mm512_maskz_madd_epi16(__U,__A,__B); 944 } 945 946 __m256i test_mm512_cvtsepi16_epi8(__m512i __A) { 947 // CHECK-LABEL: @test_mm512_cvtsepi16_epi8 948 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512 949 return _mm512_cvtsepi16_epi8(__A); 950 } 951 952 __m256i test_mm512_mask_cvtsepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) { 953 // CHECK-LABEL: @test_mm512_mask_cvtsepi16_epi8 954 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512 955 return _mm512_mask_cvtsepi16_epi8(__O, __M, __A); 956 } 957 958 __m256i test_mm512_maskz_cvtsepi16_epi8(__mmask32 __M, __m512i __A) { 959 // CHECK-LABEL: @test_mm512_maskz_cvtsepi16_epi8 960 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512 961 return _mm512_maskz_cvtsepi16_epi8(__M, __A); 962 } 963 964 __m256i test_mm512_cvtusepi16_epi8(__m512i __A) { 965 // CHECK-LABEL: @test_mm512_cvtusepi16_epi8 966 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512 967 return _mm512_cvtusepi16_epi8(__A); 968 } 969 970 __m256i test_mm512_mask_cvtusepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) { 971 // CHECK-LABEL: @test_mm512_mask_cvtusepi16_epi8 972 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512 973 return _mm512_mask_cvtusepi16_epi8(__O, __M, __A); 974 } 975 976 __m256i test_mm512_maskz_cvtusepi16_epi8(__mmask32 __M, __m512i __A) { 977 // CHECK-LABEL: @test_mm512_maskz_cvtusepi16_epi8 978 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512 979 return _mm512_maskz_cvtusepi16_epi8(__M, __A); 980 } 981 982 __m256i test_mm512_cvtepi16_epi8(__m512i __A) { 983 // CHECK-LABEL: @test_mm512_cvtepi16_epi8 984 // CHECK: @llvm.x86.avx512.mask.pmov.wb.512 985 return _mm512_cvtepi16_epi8(__A); 986 } 987 988 __m256i test_mm512_mask_cvtepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) { 989 // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi8 990 // CHECK: @llvm.x86.avx512.mask.pmov.wb.512 991 return _mm512_mask_cvtepi16_epi8(__O, __M, __A); 992 } 993 994 __m256i test_mm512_maskz_cvtepi16_epi8(__mmask32 __M, __m512i __A) { 995 // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi8 996 // CHECK: @llvm.x86.avx512.mask.pmov.wb.512 997 return _mm512_maskz_cvtepi16_epi8(__M, __A); 998 } 999 1000 __m512i test_mm512_unpackhi_epi8(__m512i __A, __m512i __B) { 1001 // CHECK-LABEL: @test_mm512_unpackhi_epi8 1002 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127> 1003 return _mm512_unpackhi_epi8(__A, __B); 1004 } 1005 1006 __m512i test_mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 1007 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi8 1008 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127> 1009 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}} 1010 return _mm512_mask_unpackhi_epi8(__W, __U, __A, __B); 1011 } 1012 1013 __m512i test_mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) { 1014 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi8 1015 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127> 1016 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}} 1017 return _mm512_maskz_unpackhi_epi8(__U, __A, __B); 1018 } 1019 1020 __m512i test_mm512_unpackhi_epi16(__m512i __A, __m512i __B) { 1021 // CHECK-LABEL: @test_mm512_unpackhi_epi16 1022 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63> 1023 return _mm512_unpackhi_epi16(__A, __B); 1024 } 1025 1026 __m512i test_mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 1027 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi16 1028 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63> 1029 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1030 return _mm512_mask_unpackhi_epi16(__W, __U, __A, __B); 1031 } 1032 1033 __m512i test_mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 1034 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi16 1035 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63> 1036 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1037 return _mm512_maskz_unpackhi_epi16(__U, __A, __B); 1038 } 1039 1040 __m512i test_mm512_unpacklo_epi8(__m512i __A, __m512i __B) { 1041 // CHECK-LABEL: @test_mm512_unpacklo_epi8 1042 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119> 1043 return _mm512_unpacklo_epi8(__A, __B); 1044 } 1045 1046 __m512i test_mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 1047 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi8 1048 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119> 1049 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}} 1050 return _mm512_mask_unpacklo_epi8(__W, __U, __A, __B); 1051 } 1052 1053 __m512i test_mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) { 1054 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi8 1055 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119> 1056 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}} 1057 return _mm512_maskz_unpacklo_epi8(__U, __A, __B); 1058 } 1059 1060 __m512i test_mm512_unpacklo_epi16(__m512i __A, __m512i __B) { 1061 // CHECK-LABEL: @test_mm512_unpacklo_epi16 1062 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59> 1063 return _mm512_unpacklo_epi16(__A, __B); 1064 } 1065 1066 __m512i test_mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 1067 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi16 1068 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59> 1069 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1070 return _mm512_mask_unpacklo_epi16(__W, __U, __A, __B); 1071 } 1072 1073 __m512i test_mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 1074 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi16 1075 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59> 1076 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1077 return _mm512_maskz_unpacklo_epi16(__U, __A, __B); 1078 } 1079 1080 __m512i test_mm512_cvtepi8_epi16(__m256i __A) { 1081 // CHECK-LABEL: @test_mm512_cvtepi8_epi16 1082 // CHECK: @llvm.x86.avx512.mask.pmovsxb.w.512 1083 return _mm512_cvtepi8_epi16(__A); 1084 } 1085 1086 __m512i test_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A) { 1087 // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi16 1088 // CHECK: @llvm.x86.avx512.mask.pmovsxb.w.512 1089 return _mm512_mask_cvtepi8_epi16(__W, __U, __A); 1090 } 1091 1092 __m512i test_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A) { 1093 // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi16 1094 // CHECK: @llvm.x86.avx512.mask.pmovsxb.w.512 1095 return _mm512_maskz_cvtepi8_epi16(__U, __A); 1096 } 1097 1098 __m512i test_mm512_cvtepu8_epi16(__m256i __A) { 1099 // CHECK-LABEL: @test_mm512_cvtepu8_epi16 1100 // CHECK: @llvm.x86.avx512.mask.pmovzxb.w.512 1101 return _mm512_cvtepu8_epi16(__A); 1102 } 1103 1104 __m512i test_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A) { 1105 // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi16 1106 // CHECK: @llvm.x86.avx512.mask.pmovzxb.w.512 1107 return _mm512_mask_cvtepu8_epi16(__W, __U, __A); 1108 } 1109 1110 __m512i test_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A) { 1111 // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi16 1112 // CHECK: @llvm.x86.avx512.mask.pmovzxb.w.512 1113 return _mm512_maskz_cvtepu8_epi16(__U, __A); 1114 } 1115 1116 __m512i test_mm512_shufflehi_epi16(__m512i __A) { 1117 // CHECK-LABEL: @test_mm512_shufflehi_epi16 1118 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28> 1119 return _mm512_shufflehi_epi16(__A, 5); 1120 } 1121 1122 __m512i test_mm512_mask_shufflehi_epi16(__m512i __W, __mmask32 __U, __m512i __A) { 1123 // CHECK-LABEL: @test_mm512_mask_shufflehi_epi16 1124 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28> 1125 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1126 return _mm512_mask_shufflehi_epi16(__W, __U, __A, 5); 1127 } 1128 1129 __m512i test_mm512_maskz_shufflehi_epi16(__mmask32 __U, __m512i __A) { 1130 // CHECK-LABEL: @test_mm512_maskz_shufflehi_epi16 1131 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28> 1132 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1133 return _mm512_maskz_shufflehi_epi16(__U, __A, 5); 1134 } 1135 1136 __m512i test_mm512_shufflelo_epi16(__m512i __A) { 1137 // CHECK-LABEL: @test_mm512_shufflelo_epi16 1138 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31> 1139 return _mm512_shufflelo_epi16(__A, 5); 1140 } 1141 1142 __m512i test_mm512_mask_shufflelo_epi16(__m512i __W, __mmask32 __U, __m512i __A) { 1143 // CHECK-LABEL: @test_mm512_mask_shufflelo_epi16 1144 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31> 1145 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1146 return _mm512_mask_shufflelo_epi16(__W, __U, __A, 5); 1147 } 1148 1149 __m512i test_mm512_maskz_shufflelo_epi16(__mmask32 __U, __m512i __A) { 1150 // CHECK-LABEL: @test_mm512_maskz_shufflelo_epi16 1151 // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31> 1152 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1153 return _mm512_maskz_shufflelo_epi16(__U, __A, 5); 1154 } 1155 1156 __m512i test_mm512_sllv_epi16(__m512i __A, __m512i __B) { 1157 // CHECK-LABEL: @test_mm512_sllv_epi16 1158 // CHECK: @llvm.x86.avx512.mask.psllv 1159 return _mm512_sllv_epi16(__A, __B); 1160 } 1161 1162 __m512i test_mm512_mask_sllv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 1163 // CHECK-LABEL: @test_mm512_mask_sllv_epi16 1164 // CHECK: @llvm.x86.avx512.mask.psllv 1165 return _mm512_mask_sllv_epi16(__W, __U, __A, __B); 1166 } 1167 1168 __m512i test_mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 1169 // CHECK-LABEL: @test_mm512_maskz_sllv_epi16 1170 // CHECK: @llvm.x86.avx512.mask.psllv 1171 return _mm512_maskz_sllv_epi16(__U, __A, __B); 1172 } 1173 1174 __m512i test_mm512_sll_epi16(__m512i __A, __m128i __B) { 1175 // CHECK-LABEL: @test_mm512_sll_epi16 1176 // CHECK: @llvm.x86.avx512.mask.psll.w.512 1177 return _mm512_sll_epi16(__A, __B); 1178 } 1179 1180 __m512i test_mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) { 1181 // CHECK-LABEL: @test_mm512_mask_sll_epi16 1182 // CHECK: @llvm.x86.avx512.mask.psll.w.512 1183 return _mm512_mask_sll_epi16(__W, __U, __A, __B); 1184 } 1185 1186 __m512i test_mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B) { 1187 // CHECK-LABEL: @test_mm512_maskz_sll_epi16 1188 // CHECK: @llvm.x86.avx512.mask.psll.w.512 1189 return _mm512_maskz_sll_epi16(__U, __A, __B); 1190 } 1191 1192 __m512i test_mm512_slli_epi16(__m512i __A) { 1193 // CHECK-LABEL: @test_mm512_slli_epi16 1194 // CHECK: @llvm.x86.avx512.mask.psll.wi.512 1195 return _mm512_slli_epi16(__A, 5); 1196 } 1197 1198 __m512i test_mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A) { 1199 // CHECK-LABEL: @test_mm512_mask_slli_epi16 1200 // CHECK: @llvm.x86.avx512.mask.psll.wi.512 1201 return _mm512_mask_slli_epi16(__W, __U, __A, 5); 1202 } 1203 1204 __m512i test_mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A) { 1205 // CHECK-LABEL: @test_mm512_maskz_slli_epi16 1206 // CHECK: @llvm.x86.avx512.mask.psll.wi.512 1207 return _mm512_maskz_slli_epi16(__U, __A, 5); 1208 } 1209 1210 __m512i test_mm512_bslli_epi128(__m512i __A) { 1211 // CHECK-LABEL: @test_mm512_bslli_epi128 1212 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122> 1213 return _mm512_bslli_epi128(__A, 5); 1214 } 1215 1216 __m512i test_mm512_srlv_epi16(__m512i __A, __m512i __B) { 1217 // CHECK-LABEL: @test_mm512_srlv_epi16 1218 // CHECK: @llvm.x86.avx512.mask.psrlv 1219 return _mm512_srlv_epi16(__A, __B); 1220 } 1221 1222 __m512i test_mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 1223 // CHECK-LABEL: @test_mm512_mask_srlv_epi16 1224 // CHECK: @llvm.x86.avx512.mask.psrlv 1225 return _mm512_mask_srlv_epi16(__W, __U, __A, __B); 1226 } 1227 1228 __m512i test_mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 1229 // CHECK-LABEL: @test_mm512_maskz_srlv_epi16 1230 // CHECK: @llvm.x86.avx512.mask.psrlv 1231 return _mm512_maskz_srlv_epi16(__U, __A, __B); 1232 } 1233 1234 __m512i test_mm512_srav_epi16(__m512i __A, __m512i __B) { 1235 // CHECK-LABEL: @test_mm512_srav_epi16 1236 // CHECK: @llvm.x86.avx512.mask.psrav 1237 return _mm512_srav_epi16(__A, __B); 1238 } 1239 1240 __m512i test_mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 1241 // CHECK-LABEL: @test_mm512_mask_srav_epi16 1242 // CHECK: @llvm.x86.avx512.mask.psrav 1243 return _mm512_mask_srav_epi16(__W, __U, __A, __B); 1244 } 1245 1246 __m512i test_mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 1247 // CHECK-LABEL: @test_mm512_maskz_srav_epi16 1248 // CHECK: @llvm.x86.avx512.mask.psrav 1249 return _mm512_maskz_srav_epi16(__U, __A, __B); 1250 } 1251 1252 __m512i test_mm512_sra_epi16(__m512i __A, __m128i __B) { 1253 // CHECK-LABEL: @test_mm512_sra_epi16 1254 // CHECK: @llvm.x86.avx512.mask.psra.w.512 1255 return _mm512_sra_epi16(__A, __B); 1256 } 1257 1258 __m512i test_mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) { 1259 // CHECK-LABEL: @test_mm512_mask_sra_epi16 1260 // CHECK: @llvm.x86.avx512.mask.psra.w.512 1261 return _mm512_mask_sra_epi16(__W, __U, __A, __B); 1262 } 1263 1264 __m512i test_mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B) { 1265 // CHECK-LABEL: @test_mm512_maskz_sra_epi16 1266 // CHECK: @llvm.x86.avx512.mask.psra.w.512 1267 return _mm512_maskz_sra_epi16(__U, __A, __B); 1268 } 1269 1270 __m512i test_mm512_srai_epi16(__m512i __A) { 1271 // CHECK-LABEL: @test_mm512_srai_epi16 1272 // CHECK: @llvm.x86.avx512.mask.psra.wi.512 1273 return _mm512_srai_epi16(__A, 5); 1274 } 1275 1276 __m512i test_mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A) { 1277 // CHECK-LABEL: @test_mm512_mask_srai_epi16 1278 // CHECK: @llvm.x86.avx512.mask.psra.wi.512 1279 return _mm512_mask_srai_epi16(__W, __U, __A, 5); 1280 } 1281 1282 __m512i test_mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A) { 1283 // CHECK-LABEL: @test_mm512_maskz_srai_epi16 1284 // CHECK: @llvm.x86.avx512.mask.psra.wi.512 1285 return _mm512_maskz_srai_epi16(__U, __A, 5); 1286 } 1287 1288 __m512i test_mm512_srl_epi16(__m512i __A, __m128i __B) { 1289 // CHECK-LABEL: @test_mm512_srl_epi16 1290 // CHECK: @llvm.x86.avx512.mask.psrl.w.512 1291 return _mm512_srl_epi16(__A, __B); 1292 } 1293 1294 __m512i test_mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) { 1295 // CHECK-LABEL: @test_mm512_mask_srl_epi16 1296 // CHECK: @llvm.x86.avx512.mask.psrl.w.512 1297 return _mm512_mask_srl_epi16(__W, __U, __A, __B); 1298 } 1299 1300 __m512i test_mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B) { 1301 // CHECK-LABEL: @test_mm512_maskz_srl_epi16 1302 // CHECK: @llvm.x86.avx512.mask.psrl.w.512 1303 return _mm512_maskz_srl_epi16(__U, __A, __B); 1304 } 1305 1306 __m512i test_mm512_srli_epi16(__m512i __A) { 1307 // CHECK-LABEL: @test_mm512_srli_epi16 1308 // CHECK: @llvm.x86.avx512.mask.psrl.wi.512 1309 return _mm512_srli_epi16(__A, 5); 1310 } 1311 1312 __m512i test_mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A) { 1313 // CHECK-LABEL: @test_mm512_mask_srli_epi16 1314 // CHECK: @llvm.x86.avx512.mask.psrl.wi.512 1315 return _mm512_mask_srli_epi16(__W, __U, __A, 5); 1316 } 1317 1318 __m512i test_mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A) { 1319 // CHECK-LABEL: @test_mm512_maskz_srli_epi16 1320 // CHECK: @llvm.x86.avx512.mask.psrl.wi.512 1321 return _mm512_maskz_srli_epi16(__U, __A, 5); 1322 } 1323 1324 __m512i test_mm512_bsrli_epi128(__m512i __A) { 1325 // CHECK-LABEL: @test_mm512_bsrli_epi128 1326 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 66, i32 67, i32 68, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 82, i32 83, i32 84, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 98, i32 99, i32 100, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113, i32 114, i32 115, i32 116> 1327 return _mm512_bsrli_epi128(__A, 5); 1328 } 1329 __m512i test_mm512_mask_mov_epi16(__m512i __W, __mmask32 __U, __m512i __A) { 1330 // CHECK-LABEL: @test_mm512_mask_mov_epi16 1331 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1332 return _mm512_mask_mov_epi16(__W, __U, __A); 1333 } 1334 1335 __m512i test_mm512_maskz_mov_epi16(__mmask32 __U, __m512i __A) { 1336 // CHECK-LABEL: @test_mm512_maskz_mov_epi16 1337 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1338 return _mm512_maskz_mov_epi16(__U, __A); 1339 } 1340 1341 __m512i test_mm512_mask_mov_epi8(__m512i __W, __mmask64 __U, __m512i __A) { 1342 // CHECK-LABEL: @test_mm512_mask_mov_epi8 1343 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}} 1344 return _mm512_mask_mov_epi8(__W, __U, __A); 1345 } 1346 1347 __m512i test_mm512_maskz_mov_epi8(__mmask64 __U, __m512i __A) { 1348 // CHECK-LABEL: @test_mm512_maskz_mov_epi8 1349 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}} 1350 return _mm512_maskz_mov_epi8(__U, __A); 1351 } 1352 1353 __m512i test_mm512_mask_set1_epi8(__m512i __O, __mmask64 __M, char __A) { 1354 // CHECK-LABEL: @test_mm512_mask_set1_epi8 1355 // CHECK: @llvm.x86.avx512.mask.pbroadcast.b.gpr.512 1356 return _mm512_mask_set1_epi8(__O, __M, __A); 1357 } 1358 1359 __m512i test_mm512_maskz_set1_epi8(__mmask64 __M, char __A) { 1360 // CHECK-LABEL: @test_mm512_maskz_set1_epi8 1361 // CHECK: @llvm.x86.avx512.mask.pbroadcast.b.gpr.512 1362 return _mm512_maskz_set1_epi8(__M, __A); 1363 } 1364 1365 __mmask64 test_mm512_kunpackd(__mmask64 __A, __mmask64 __B) { 1366 // CHECK-LABEL: @test_mm512_kunpackd 1367 // CHECK: @llvm.x86.avx512.kunpck.dq 1368 return _mm512_kunpackd(__A, __B); 1369 } 1370 1371 __mmask32 test_mm512_kunpackw(__mmask32 __A, __mmask32 __B) { 1372 // CHECK-LABEL: @test_mm512_kunpackw 1373 // CHECK: @llvm.x86.avx512.kunpck.wd 1374 return _mm512_kunpackw(__A, __B); 1375 } 1376 1377 __m512i test_mm512_mask_loadu_epi16(__m512i __W, __mmask32 __U, void const *__P) { 1378 // CHECK-LABEL: @test_mm512_mask_loadu_epi16 1379 // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}}) 1380 return _mm512_mask_loadu_epi16(__W, __U, __P); 1381 } 1382 1383 __m512i test_mm512_maskz_loadu_epi16(__mmask32 __U, void const *__P) { 1384 // CHECK-LABEL: @test_mm512_maskz_loadu_epi16 1385 // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}}) 1386 return _mm512_maskz_loadu_epi16(__U, __P); 1387 } 1388 1389 __m512i test_mm512_mask_loadu_epi8(__m512i __W, __mmask64 __U, void const *__P) { 1390 // CHECK-LABEL: @test_mm512_mask_loadu_epi8 1391 // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}}) 1392 return _mm512_mask_loadu_epi8(__W, __U, __P); 1393 } 1394 1395 __m512i test_mm512_maskz_loadu_epi8(__mmask64 __U, void const *__P) { 1396 // CHECK-LABEL: @test_mm512_maskz_loadu_epi8 1397 // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}}) 1398 return _mm512_maskz_loadu_epi8(__U, __P); 1399 } 1400 void test_mm512_mask_storeu_epi16(void *__P, __mmask32 __U, __m512i __A) { 1401 // CHECK-LABEL: @test_mm512_mask_storeu_epi16 1402 // CHECK: @llvm.masked.store.v32i16.p0v32i16(<32 x i16> %{{.*}}, <32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}) 1403 return _mm512_mask_storeu_epi16(__P, __U, __A); 1404 } 1405 __mmask64 test_mm512_test_epi8_mask(__m512i __A, __m512i __B) { 1406 // CHECK-LABEL: @test_mm512_test_epi8_mask 1407 // CHECK: @llvm.x86.avx512.ptestm.b.512 1408 return _mm512_test_epi8_mask(__A, __B); 1409 } 1410 1411 void test_mm512_mask_storeu_epi8(void *__P, __mmask64 __U, __m512i __A) { 1412 // CHECK-LABEL: @test_mm512_mask_storeu_epi8 1413 // CHECK: @llvm.masked.store.v64i8.p0v64i8(<64 x i8> %{{.*}}, <64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}) 1414 return _mm512_mask_storeu_epi8(__P, __U, __A); 1415 } 1416 __mmask64 test_mm512_mask_test_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) { 1417 // CHECK-LABEL: @test_mm512_mask_test_epi8_mask 1418 // CHECK: @llvm.x86.avx512.ptestm.b.512 1419 return _mm512_mask_test_epi8_mask(__U, __A, __B); 1420 } 1421 1422 __mmask32 test_mm512_test_epi16_mask(__m512i __A, __m512i __B) { 1423 // CHECK-LABEL: @test_mm512_test_epi16_mask 1424 // CHECK: @llvm.x86.avx512.ptestm.w. 1425 return _mm512_test_epi16_mask(__A, __B); 1426 } 1427 1428 __mmask32 test_mm512_mask_test_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) { 1429 // CHECK-LABEL: @test_mm512_mask_test_epi16_mask 1430 // CHECK: @llvm.x86.avx512.ptestm.w. 1431 return _mm512_mask_test_epi16_mask(__U, __A, __B); 1432 } 1433 1434 __mmask64 test_mm512_testn_epi8_mask(__m512i __A, __m512i __B) { 1435 // CHECK-LABEL: @test_mm512_testn_epi8_mask 1436 // CHECK: @llvm.x86.avx512.ptestnm.b. 1437 return _mm512_testn_epi8_mask(__A, __B); 1438 } 1439 1440 __mmask64 test_mm512_mask_testn_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) { 1441 // CHECK-LABEL: @test_mm512_mask_testn_epi8_mask 1442 // CHECK: @llvm.x86.avx512.ptestnm.b. 1443 return _mm512_mask_testn_epi8_mask(__U, __A, __B); 1444 } 1445 1446 __mmask32 test_mm512_testn_epi16_mask(__m512i __A, __m512i __B) { 1447 // CHECK-LABEL: @test_mm512_testn_epi16_mask 1448 // CHECK: @llvm.x86.avx512.ptestnm.w. 1449 return _mm512_testn_epi16_mask(__A, __B); 1450 } 1451 1452 __mmask32 test_mm512_mask_testn_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) { 1453 // CHECK-LABEL: @test_mm512_mask_testn_epi16_mask 1454 // CHECK: @llvm.x86.avx512.ptestnm.w. 1455 return _mm512_mask_testn_epi16_mask(__U, __A, __B); 1456 } 1457 1458 __mmask64 test_mm512_movepi8_mask(__m512i __A) { 1459 // CHECK-LABEL: @test_mm512_movepi8_mask 1460 // CHECK: @llvm.x86.avx512.cvtb2mask.512 1461 return _mm512_movepi8_mask(__A); 1462 } 1463 1464 __m512i test_mm512_movm_epi8(__mmask64 __A) { 1465 // CHECK-LABEL: @test_mm512_movm_epi8 1466 // CHECK: @llvm.x86.avx512.cvtmask2b.512 1467 return _mm512_movm_epi8(__A); 1468 } 1469 1470 __m512i test_mm512_movm_epi16(__mmask32 __A) { 1471 // CHECK-LABEL: @test_mm512_movm_epi16 1472 // CHECK: @llvm.x86.avx512.cvtmask2w.512 1473 return _mm512_movm_epi16(__A); 1474 } 1475 1476 __m512i test_mm512_broadcastb_epi8(__m128i __A) { 1477 // CHECK-LABEL: @test_mm512_broadcastb_epi8 1478 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <64 x i32> zeroinitializer 1479 return _mm512_broadcastb_epi8(__A); 1480 } 1481 1482 __m512i test_mm512_mask_broadcastb_epi8(__m512i __O, __mmask64 __M, __m128i __A) { 1483 // CHECK-LABEL: @test_mm512_mask_broadcastb_epi8 1484 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <64 x i32> zeroinitializer 1485 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}} 1486 return _mm512_mask_broadcastb_epi8(__O, __M, __A); 1487 } 1488 1489 __m512i test_mm512_maskz_broadcastb_epi8(__mmask64 __M, __m128i __A) { 1490 // CHECK-LABEL: @test_mm512_maskz_broadcastb_epi8 1491 // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <64 x i32> zeroinitializer 1492 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}} 1493 return _mm512_maskz_broadcastb_epi8(__M, __A); 1494 } 1495 1496 __m512i test_mm512_broadcastw_epi16(__m128i __A) { 1497 // CHECK-LABEL: @test_mm512_broadcastw_epi16 1498 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <32 x i32> zeroinitializer 1499 return _mm512_broadcastw_epi16(__A); 1500 } 1501 1502 __m512i test_mm512_mask_broadcastw_epi16(__m512i __O, __mmask32 __M, __m128i __A) { 1503 // CHECK-LABEL: @test_mm512_mask_broadcastw_epi16 1504 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <32 x i32> zeroinitializer 1505 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1506 return _mm512_mask_broadcastw_epi16(__O, __M, __A); 1507 } 1508 1509 __m512i test_mm512_maskz_broadcastw_epi16(__mmask32 __M, __m128i __A) { 1510 // CHECK-LABEL: @test_mm512_maskz_broadcastw_epi16 1511 // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <32 x i32> zeroinitializer 1512 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}} 1513 return _mm512_maskz_broadcastw_epi16(__M, __A); 1514 } 1515 1516 __m512i test_mm512_mask_set1_epi16(__m512i __O, __mmask32 __M, short __A) { 1517 // CHECK-LABEL: @test_mm512_mask_set1_epi16 1518 // CHECK: @llvm.x86.avx512.mask.pbroadcast.w.gpr.512 1519 return _mm512_mask_set1_epi16(__O, __M, __A); 1520 } 1521 1522 __m512i test_mm512_maskz_set1_epi16(__mmask32 __M, short __A) { 1523 // CHECK-LABEL: @test_mm512_maskz_set1_epi16 1524 // CHECK: @llvm.x86.avx512.mask.pbroadcast.w.gpr.512 1525 return _mm512_maskz_set1_epi16(__M, __A); 1526 } 1527 __m512i test_mm512_permutexvar_epi16(__m512i __A, __m512i __B) { 1528 // CHECK-LABEL: @test_mm512_permutexvar_epi16 1529 // CHECK: @llvm.x86.avx512.mask.permvar.hi.512 1530 return _mm512_permutexvar_epi16(__A, __B); 1531 } 1532 1533 __m512i test_mm512_maskz_permutexvar_epi16(__mmask32 __M, __m512i __A, __m512i __B) { 1534 // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi16 1535 // CHECK: @llvm.x86.avx512.mask.permvar.hi.512 1536 return _mm512_maskz_permutexvar_epi16(__M, __A, __B); 1537 } 1538 1539 __m512i test_mm512_mask_permutexvar_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) { 1540 // CHECK-LABEL: @test_mm512_mask_permutexvar_epi16 1541 // CHECK: @llvm.x86.avx512.mask.permvar.hi.512 1542 return _mm512_mask_permutexvar_epi16(__W, __M, __A, __B); 1543 } 1544 __m512i test_mm512_alignr_epi8(__m512i __A,__m512i __B){ 1545 // CHECK-LABEL: @test_mm512_alignr_epi8 1546 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113> 1547 return _mm512_alignr_epi8(__A, __B, 2); 1548 } 1549 1550 __m512i test_mm512_mask_alignr_epi8(__m512i __W, __mmask64 __U, __m512i __A,__m512i __B){ 1551 // CHECK-LABEL: @test_mm512_mask_alignr_epi8 1552 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113> 1553 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}} 1554 return _mm512_mask_alignr_epi8(__W, __U, __A, __B, 2); 1555 } 1556 1557 __m512i test_mm512_maskz_alignr_epi8(__mmask64 __U, __m512i __A,__m512i __B){ 1558 // CHECK-LABEL: @test_mm512_maskz_alignr_epi8 1559 // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113> 1560 // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}} 1561 return _mm512_maskz_alignr_epi8(__U, __A, __B, 2); 1562 } 1563 1564 1565 1566 __m512i test_mm512_mm_dbsad_epu8(__m512i __A, __m512i __B) { 1567 // CHECK-LABEL: @test_mm512_mm_dbsad_epu8 1568 // CHECK: @llvm.x86.avx512.mask.dbpsadbw.512 1569 return _mm512_dbsad_epu8(__A, __B, 170); 1570 } 1571 1572 __m512i test_mm512_mm_mask_dbsad_epu8(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 1573 // CHECK-LABEL: @test_mm512_mm_mask_dbsad_epu8 1574 // CHECK: @llvm.x86.avx512.mask.dbpsadbw.512 1575 return _mm512_mask_dbsad_epu8(__W, __U, __A, __B, 170); 1576 } 1577 1578 __m512i test_mm512_mm_maskz_dbsad_epu8(__mmask32 __U, __m512i __A, __m512i __B) { 1579 // CHECK-LABEL: @test_mm512_mm_maskz_dbsad_epu8 1580 // CHECK: @llvm.x86.avx512.mask.dbpsadbw.512 1581 return _mm512_maskz_dbsad_epu8(__U, __A, __B, 170); 1582 } 1583 1584 __m512i test_mm512_sad_epu8(__m512i __A, __m512i __B) { 1585 // CHECK-LABEL: @test_mm512_sad_epu8 1586 // CHECK: @llvm.x86.avx512.psad.bw.512 1587 return _mm512_sad_epu8(__A, __B); 1588 } 1589 1590 __mmask32 test_mm512_movepi16_mask(__m512i __A) { 1591 // CHECK-LABEL: @test_mm512_movepi16_mask 1592 // CHECK: @llvm.x86.avx512.cvtw2mask.512 1593 return _mm512_movepi16_mask(__A); 1594 } 1595 1596 void test_mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 1597 { 1598 // CHECK-LABEL: @test_mm512_mask_cvtepi16_storeu_epi8 1599 // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.512 1600 __builtin_ia32_pmovwb512mem_mask ( __P, __A, __M); 1601 } 1602 1603 void test_mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 1604 { 1605 // CHECK-LABEL: @test_mm512_mask_cvtsepi16_storeu_epi8 1606 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.512 1607 __builtin_ia32_pmovswb512mem_mask ( __P, __A, __M); 1608 } 1609 1610 void test_mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 1611 { 1612 // CHECK-LABEL: @test_mm512_mask_cvtusepi16_storeu_epi8 1613 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.512 1614 __builtin_ia32_pmovuswb512mem_mask ( __P, __A, __M); 1615 } 1616