brintos

brintos / llvm-project-archived public Read only

0
0
Text · 83.6 KiB · b8d9587 Raw
1762 lines · c
1// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror | FileCheck %s2// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror | FileCheck %s3// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror | FileCheck %s4// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror | FileCheck %s5 6// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s7// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s8// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s9// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512dq -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s10 11 12#include <immintrin.h>13#include "builtin_test_helpers.h"14 15__mmask8 test_knot_mask8(__mmask8 a) {16  // CHECK-LABEL: test_knot_mask817  // CHECK: [[IN:%.*]] = bitcast i8 %{{.*}} to <8 x i1>18  // CHECK: [[NOT:%.*]] = xor <8 x i1> [[IN]], splat (i1 true)19  return _knot_mask8(a);20}21 22TEST_CONSTEXPR(_knot_mask8(0) == 0xFF);23TEST_CONSTEXPR(_knot_mask8(0x345) == 0xBA);24 25__mmask8 test_kand_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {26  // CHECK-LABEL: test_kand_mask827  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>28  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>29  // CHECK: [[RES:%.*]] = and <8 x i1> [[LHS]], [[RHS]]30  return _mm512_mask_cmpneq_epu64_mask(_kand_mask8(_mm512_cmpneq_epu64_mask(__A, __B),31                                                   _mm512_cmpneq_epu64_mask(__C, __D)),32                                                   __E, __F);33}34 35TEST_CONSTEXPR(_kand_mask8(0x0C, 0x0A) == 0x08);36TEST_CONSTEXPR(_kand_mask8(0x123, 0xFF) == 0x23);37TEST_CONSTEXPR(_kand_mask8(0xAB, 0x00) == 0x00);38TEST_CONSTEXPR(_kand_mask8(0x56, 0xFF) == 0x56);39TEST_CONSTEXPR(_kand_mask8(0xAA, 0x55) == 0x00);40 41__mmask8 test_kandn_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {42  // CHECK-LABEL: test_kandn_mask843  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>44  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>45  // CHECK: [[NOT:%.*]] = xor <8 x i1> [[LHS]], splat (i1 true)46  // CHECK: [[RES:%.*]] = and <8 x i1> [[NOT]], [[RHS]]47  return _mm512_mask_cmpneq_epu64_mask(_kandn_mask8(_mm512_cmpneq_epu64_mask(__A, __B),48                                                    _mm512_cmpneq_epu64_mask(__C, __D)),49                                                    __E, __F);50}51 52TEST_CONSTEXPR(_kandn_mask8(0xC3, 0xA5) == 0x24);53TEST_CONSTEXPR(_kandn_mask8(0x1F0, 0xFF) == 0x0F);54TEST_CONSTEXPR(_kandn_mask8(0x00, 0xB7) == 0xB7);55TEST_CONSTEXPR(_kandn_mask8(0xFF, 0x7E) == 0x00);56TEST_CONSTEXPR(_kandn_mask8(0x55, 0x55) == 0x00);57 58__mmask8 test_kor_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {59  // CHECK-LABEL: test_kor_mask860  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>61  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>62  // CHECK: [[RES:%.*]] = or <8 x i1> [[LHS]], [[RHS]]63  return _mm512_mask_cmpneq_epu64_mask(_kor_mask8(_mm512_cmpneq_epu64_mask(__A, __B),64                                                  _mm512_cmpneq_epu64_mask(__C, __D)),65                                                  __E, __F);66}67 68TEST_CONSTEXPR(_kor_mask8(0xB3, 0x6C) == 0xFF);69TEST_CONSTEXPR(_kor_mask8(0x1A5, 0x1A5) == 0xA5);70TEST_CONSTEXPR(_kor_mask8(0xDE, 0x00) == 0xDE);71TEST_CONSTEXPR(_kor_mask8(0x42, 0xFF) == 0xFF);72TEST_CONSTEXPR(_kor_mask8(0xAA, 0x55) == 0xFF);73 74__mmask8 test_kxnor_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {75  // CHECK-LABEL: test_kxnor_mask876  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>77  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>78  // CHECK: [[NOT:%.*]] = xor <8 x i1> [[LHS]], splat (i1 true)79  // CHECK: [[RES:%.*]] = xor <8 x i1> [[NOT]], [[RHS]]80  return _mm512_mask_cmpneq_epu64_mask(_kxnor_mask8(_mm512_cmpneq_epu64_mask(__A, __B),81                                                    _mm512_cmpneq_epu64_mask(__C, __D)),82                                                    __E, __F);83}84 85TEST_CONSTEXPR(_kxnor_mask8(0xC5, 0xAF) == 0x95);86TEST_CONSTEXPR(_kxnor_mask8(0x1234, 0xFF) == 0x34);87TEST_CONSTEXPR(_kxnor_mask8(0x3A, 0x00) == 0xC5);88TEST_CONSTEXPR(_kxnor_mask8(0xB4, 0xFF) == 0xB4);89TEST_CONSTEXPR(_kxnor_mask8(0xAA, 0x55) == 0x00);90 91__mmask8 test_kxor_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {92  // CHECK-LABEL: test_kxor_mask893  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>94  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>95  // CHECK: [[RES:%.*]] = xor <8 x i1> [[LHS]], [[RHS]]96  return _mm512_mask_cmpneq_epu64_mask(_kxor_mask8(_mm512_cmpneq_epu64_mask(__A, __B),97                                                   _mm512_cmpneq_epu64_mask(__C, __D)),98                                                   __E, __F);99}100 101TEST_CONSTEXPR(_kxor_mask8(0xC5, 0xAF) == 0x6A);102TEST_CONSTEXPR(_kxor_mask8(0x1234, 0xFFFF) == 0xCB);103TEST_CONSTEXPR(_kxor_mask8(0xCD, 0x00) == 0xCD);104TEST_CONSTEXPR(_kxor_mask8(0x78, 0xFF) == 0x87);105TEST_CONSTEXPR(_kxor_mask8(0xAA, 0x55) == 0xFF);106 107unsigned char test_kortestz_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {108  // CHECK-LABEL: test_kortestz_mask8_u8109  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>110  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>111  // CHECK: [[OR:%.*]] = or <8 x i1> [[LHS]], [[RHS]]112  // CHECK: [[CAST:%.*]] = bitcast <8 x i1> [[OR]] to i8113  // CHECK: [[CMP:%.*]] = icmp eq i8 [[CAST]], 0114  // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32115  // CHECK: trunc i32 [[ZEXT]] to i8116  return _kortestz_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),117                            _mm512_cmpneq_epu64_mask(__C, __D));118}119 120TEST_CONSTEXPR(_kortestz_mask8_u8(0x00, 0x00) == 1);121TEST_CONSTEXPR(_kortestz_mask8_u8(0x00, 0x80) == 0);122TEST_CONSTEXPR(_kortestz_mask8_u8(0x01, 0xFE) == 0);123 124unsigned char test_kortestc_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {125  // CHECK-LABEL: test_kortestc_mask8_u8126  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>127  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>128  // CHECK: [[OR:%.*]] = or <8 x i1> [[LHS]], [[RHS]]129  // CHECK: [[CAST:%.*]] = bitcast <8 x i1> [[OR]] to i8130  // CHECK: [[CMP:%.*]] = icmp eq i8 [[CAST]], -1131  // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32132  // CHECK: trunc i32 [[ZEXT]] to i8133  return _kortestc_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),134                            _mm512_cmpneq_epu64_mask(__C, __D));135}136 137TEST_CONSTEXPR(_kortestc_mask8_u8(0x00, 0x00) == 0);138TEST_CONSTEXPR(_kortestc_mask8_u8(0x00, 0x80) == 0);139TEST_CONSTEXPR(_kortestc_mask8_u8(0x01, 0xFE) == 1);140 141unsigned char test_kortest_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {142  // CHECK-LABEL: test_kortest_mask8_u8143  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>144  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>145  // CHECK: [[OR:%.*]] = or <8 x i1> [[LHS]], [[RHS]]146  // CHECK: [[CAST:%.*]] = bitcast <8 x i1> [[OR]] to i8147  // CHECK: [[CMP:%.*]] = icmp eq i8 [[CAST]], -1148  // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32149  // CHECK: trunc i32 [[ZEXT]] to i8150  // CHECK: [[LHS2:%.*]] = bitcast i8 %{{.*}} to <8 x i1>151  // CHECK: [[RHS2:%.*]] = bitcast i8 %{{.*}} to <8 x i1>152  // CHECK: [[OR2:%.*]] = or <8 x i1> [[LHS2]], [[RHS2]]153  // CHECK: [[CAST2:%.*]] = bitcast <8 x i1> [[OR2]] to i8154  // CHECK: [[CMP2:%.*]] = icmp eq i8 [[CAST2]], 0155  // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32156  // CHECK: trunc i32 [[ZEXT2]] to i8157  return _kortest_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),158                           _mm512_cmpneq_epu64_mask(__C, __D), CF);159}160 161// Test constexpr handling.162#if defined(__cplusplus) && (__cplusplus >= 201103L)163constexpr unsigned char164test_kortest_mask8_u8(unsigned char A, unsigned char B) {165  unsigned char all_ones{};166  return (_kortest_mask8_u8(A, B, &all_ones) << 4) | all_ones;167}168 169void _kortest_mask8_u8() {170  constexpr unsigned char A1 = 0x00;171  constexpr unsigned char B1 = 0x00;172  constexpr unsigned char expected_result_1 = 0x10;173  static_assert(test_kortest_mask8_u8(A1, B1) == expected_result_1);174  constexpr unsigned char A2 = 0x00;175  constexpr unsigned char B2 = 0x80;176  constexpr unsigned char expected_result_2 = 0x00;177  static_assert(test_kortest_mask8_u8(A2, B2) == expected_result_2);178  constexpr unsigned char A3 = 0x01;179  constexpr unsigned char B3 = 0xFE;180  constexpr unsigned char expected_result_3 = 0x01;181  static_assert(test_kortest_mask8_u8(A3, B3) == expected_result_3);182}183#endif184 185unsigned char test_ktestz_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {186  // CHECK-LABEL: test_ktestz_mask8_u8187  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>188  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>189  // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.b(<8 x i1> [[LHS]], <8 x i1> [[RHS]])190  // CHECK: trunc i32 [[RES]] to i8191  return _ktestz_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),192                          _mm512_cmpneq_epu64_mask(__C, __D));193}194 195TEST_CONSTEXPR(_ktestz_mask8_u8(0x00, 0x00) == 1);196TEST_CONSTEXPR(_ktestz_mask8_u8(0x00, 0x80) == 1);197TEST_CONSTEXPR(_ktestz_mask8_u8(0xF0, 0x80) == 0);198TEST_CONSTEXPR(_ktestz_mask8_u8(0x01, 0x01) == 0);199 200unsigned char test_ktestc_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {201  // CHECK-LABEL: test_ktestc_mask8_u8202  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>203  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>204  // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.b(<8 x i1> [[LHS]], <8 x i1> [[RHS]])205  // CHECK: trunc i32 [[RES]] to i8206  return _ktestc_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),207                          _mm512_cmpneq_epu64_mask(__C, __D));208}209 210TEST_CONSTEXPR(_ktestc_mask8_u8(0x00, 0x00) == 1);211TEST_CONSTEXPR(_ktestc_mask8_u8(0x00, 0x80) == 0);212TEST_CONSTEXPR(_ktestc_mask8_u8(0xF0, 0x80) == 1);213TEST_CONSTEXPR(_ktestc_mask8_u8(0x01, 0x01) == 1);214 215unsigned char test_ktest_mask8_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {216  // CHECK-LABEL: test_ktest_mask8_u8217  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>218  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>219  // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.b(<8 x i1> [[LHS]], <8 x i1> [[RHS]])220  // CHECK: trunc i32 [[RES]] to i8221  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>222  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>223  // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.b(<8 x i1> [[LHS]], <8 x i1> [[RHS]])224  // CHECK: trunc i32 [[RES]] to i8225  return _ktest_mask8_u8(_mm512_cmpneq_epu64_mask(__A, __B),226                         _mm512_cmpneq_epu64_mask(__C, __D), CF);227}228 229// Test constexpr handling.230#if defined(__cplusplus) && (__cplusplus >= 201103L)231constexpr unsigned char232test_ktest_mask8_u8(unsigned char A, unsigned char B) {233  unsigned char all_ones{};234  return (_ktest_mask8_u8(A, B, &all_ones) << 4) | all_ones;235}236 237void _ktest_mask8_u8() {238  constexpr unsigned char A1 = 0x00;239  constexpr unsigned char B1 = 0x00;240  constexpr unsigned char expected_result_1 = 0x11;241  static_assert(test_ktest_mask8_u8(A1, B1) == expected_result_1);242  constexpr unsigned char A2 = 0x00;243  constexpr unsigned char B2 = 0x80;244  constexpr unsigned char expected_result_2 = 0x10;245  static_assert(test_ktest_mask8_u8(A2, B2) == expected_result_2);246  constexpr unsigned char A3 = 0xF0;247  constexpr unsigned char B3 = 0x80;248  constexpr unsigned char expected_result_3 = 0x01;249  static_assert(test_ktest_mask8_u8(A3, B3) == expected_result_3);250  constexpr unsigned char A4 = 0x01;251  constexpr unsigned char B4 = 0x01;252  constexpr unsigned char expected_result_4 = 0x01;253  static_assert(test_ktest_mask8_u8(A4, B4) == expected_result_4);254}255#endif256 257unsigned char test_ktestz_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {258  // CHECK-LABEL: test_ktestz_mask16_u8259  // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>260  // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>261  // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.w(<16 x i1> [[LHS]], <16 x i1> [[RHS]])262  // CHECK: trunc i32 [[RES]] to i8263  return _ktestz_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),264                           _mm512_cmpneq_epu32_mask(__C, __D));265}266 267TEST_CONSTEXPR(_ktestz_mask16_u8(0x0000, 0x0000) == 1);268TEST_CONSTEXPR(_ktestz_mask16_u8(0x0000, 0x8000) == 1);269TEST_CONSTEXPR(_ktestz_mask16_u8(0xF000, 0x8000) == 0);270TEST_CONSTEXPR(_ktestz_mask16_u8(0x0123, 0x0123) == 0);271 272unsigned char test_ktestc_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {273  // CHECK-LABEL: test_ktestc_mask16_u8274  // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>275  // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>276  // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.w(<16 x i1> [[LHS]], <16 x i1> [[RHS]])277  // CHECK: trunc i32 [[RES]] to i8278  return _ktestc_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),279                           _mm512_cmpneq_epu32_mask(__C, __D));280}281 282TEST_CONSTEXPR(_ktestc_mask16_u8(0x0000, 0x0000) == 1);283TEST_CONSTEXPR(_ktestc_mask16_u8(0x0000, 0x8000) == 0);284TEST_CONSTEXPR(_ktestc_mask16_u8(0xF000, 0x8000) == 1);285TEST_CONSTEXPR(_ktestc_mask16_u8(0x0123, 0x0123) == 1);286 287unsigned char test_ktest_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {288  // CHECK-LABEL: test_ktest_mask16_u8289  // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>290  // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>291  // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestc.w(<16 x i1> [[LHS]], <16 x i1> [[RHS]])292  // CHECK: trunc i32 [[RES]] to i8293  // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>294  // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>295  // CHECK: [[RES:%.*]] = call i32 @llvm.x86.avx512.ktestz.w(<16 x i1> [[LHS]], <16 x i1> [[RHS]])296  // CHECK: trunc i32 [[RES]] to i8297  return _ktest_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),298                          _mm512_cmpneq_epu32_mask(__C, __D), CF);299}300 301// Test constexpr handling.302#if defined(__cplusplus) && (__cplusplus >= 201103L)303constexpr unsigned char304test_ktest_mask16_u8(unsigned int A, unsigned int B) {305  unsigned char all_ones{};306  return (_ktest_mask16_u8(A, B, &all_ones) << 4) | all_ones;307}308 309void _ktest_mask16_u8() {310  constexpr unsigned int A1 = 0x0000;311  constexpr unsigned int B1 = 0x0000;312  constexpr unsigned char expected_result_1 = 0x11;313  static_assert(test_ktest_mask16_u8(A1, B1) == expected_result_1);314  constexpr unsigned int A2 = 0x0000;315  constexpr unsigned int B2 = 0x8000;316  constexpr unsigned char expected_result_2 = 0x10;317  static_assert(test_ktest_mask16_u8(A2, B2) == expected_result_2);318  constexpr unsigned int A3 = 0xF000;319  constexpr unsigned int B3 = 0x8000;320  constexpr unsigned char expected_result_3 = 0x01;321  static_assert(test_ktest_mask16_u8(A3, B3) == expected_result_3);322  constexpr unsigned int A4 = 0x0123;323  constexpr unsigned int B4 = 0x0123;324  constexpr unsigned char expected_result_4 = 0x01;325  static_assert(test_ktest_mask16_u8(A4, B4) == expected_result_4);326}327#endif328 329__mmask8 test_kadd_mask8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {330  // CHECK-LABEL: test_kadd_mask8331  // CHECK: [[LHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>332  // CHECK: [[RHS:%.*]] = bitcast i8 %{{.*}} to <8 x i1>333  // CHECK: [[RES:%.*]] = call <8 x i1> @llvm.x86.avx512.kadd.b(<8 x i1> [[LHS]], <8 x i1> [[RHS]])334  return _mm512_mask_cmpneq_epu64_mask(_kadd_mask8(_mm512_cmpneq_epu64_mask(__A, __B),335                                                   _mm512_cmpneq_epu64_mask(__C, __D)),336                                                   __E, __F);337}338 339TEST_CONSTEXPR(_kadd_mask8(20, 30) == 50);340TEST_CONSTEXPR(_kadd_mask8(128, 0) == 128);341TEST_CONSTEXPR(_kadd_mask8(0xFF, 1) == 0);342TEST_CONSTEXPR(_kadd_mask8(0xC8, 0x64) == 0x2C);343TEST_CONSTEXPR(_kadd_mask8(0xFA, 0x0F) == 0x09);344 345__mmask16 test_kadd_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {346  // CHECK-LABEL: test_kadd_mask16347  // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>348  // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>349  // CHECK: [[RES:%.*]] = call <16 x i1> @llvm.x86.avx512.kadd.w(<16 x i1> [[LHS]], <16 x i1> [[RHS]])350  return _mm512_mask_cmpneq_epu32_mask(_kadd_mask16(_mm512_cmpneq_epu32_mask(__A, __B),351                                                    _mm512_cmpneq_epu32_mask(__C, __D)),352                                                    __E, __F);353}354 355TEST_CONSTEXPR(_kadd_mask16(1000, 2000) == 3000);356TEST_CONSTEXPR(_kadd_mask16(32768, 0) == 32768);357TEST_CONSTEXPR(_kadd_mask16(0xFFFF, 1) == 0);358TEST_CONSTEXPR(_kadd_mask16(0xEA60, 0x2710) == 0x1170);359TEST_CONSTEXPR(_kadd_mask16(0xFFFA, 0x14) == 0x0E);360 361__mmask8 test_kshiftli_mask8(__m512i A, __m512i B, __m512i C, __m512i D) {362  // CHECK-LABEL: test_kshiftli_mask8363  // CHECK: [[VAL:%.*]] = bitcast i8 %{{.*}} to <8 x i1>364  // CHECK: [[RES:%.*]] = shufflevector <8 x i1> zeroinitializer, <8 x i1> [[VAL]], <8 x i32> <i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13>365  return _mm512_mask_cmpneq_epu64_mask(_kshiftli_mask8(_mm512_cmpneq_epu64_mask(A, B), 2), C, D);366}367 368__mmask8 test_kshiftri_mask8(__m512i A, __m512i B, __m512i C, __m512i D) {369  // CHECK-LABEL: test_kshiftri_mask8370  // CHECK: [[VAL:%.*]] = bitcast i8 %{{.*}} to <8 x i1>371  // CHECK: [[RES:%.*]] = shufflevector <8 x i1> [[VAL]], <8 x i1> zeroinitializer, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>372  return _mm512_mask_cmpneq_epu64_mask(_kshiftri_mask8(_mm512_cmpneq_epu64_mask(A, B), 2), C, D);373}374 375unsigned int test_cvtmask8_u32(__m512i A, __m512i B) {376  // CHECK-LABEL: test_cvtmask8_u32377  // CHECK: zext i8 %{{.*}} to i32378  return _cvtmask8_u32(_mm512_cmpneq_epu64_mask(A, B));379}380 381TEST_CONSTEXPR(_cvtmask8_u32((__mmask8)0x5A) == 0x5A);382 383__mmask8 test_cvtu32_mask8(__m512i A, __m512i B, unsigned int C) {384  // CHECK-LABEL: test_cvtu32_mask8385  // CHECK: trunc i32 %{{.*}} to i8386  return _mm512_mask_cmpneq_epu64_mask(_cvtu32_mask8(C), A, B);387}388 389TEST_CONSTEXPR(_cvtu32_mask8(0xB7) == (__mmask8)0xB7);390TEST_CONSTEXPR(_cvtu32_mask8(_cvtmask8_u32((__mmask8)0xDE)) == (__mmask8)0xDE);391 392__mmask8 test_load_mask8(__mmask8 *A, __m512i B, __m512i C) {393  // CHECK-LABEL: test_load_mask8394  // CHECK: [[LOAD:%.*]] = load i8, ptr %{{.*}}395  return _mm512_mask_cmpneq_epu64_mask(_load_mask8(A), B, C);396}397 398void test_store_mask8(__mmask8 *A, __m512i B, __m512i C) {399  // CHECK-LABEL: test_store_mask8400  // CHECK: store i8 %{{.*}}, ptr %{{.*}}401  _store_mask8(A, _mm512_cmpneq_epu64_mask(B, C));402}403 404__m512i test_mm512_mullo_epi64 (__m512i __A, __m512i __B) {405  // CHECK-LABEL: test_mm512_mullo_epi64406  // CHECK: mul <8 x i64>407  return (__m512i) _mm512_mullo_epi64(__A, __B);408}409TEST_CONSTEXPR(match_v8di(_mm512_mullo_epi64((__m512i)(__v8di){+1, -2, +3, -4, +5, -6, +7, -8}, (__m512i)(__v8di){-2, +3, +4, +5, -6, +7, +8, +9}), -2, -6, +12, -20, -30, -42, +56, -72));410 411__m512i test_mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {412  // CHECK-LABEL: test_mm512_mask_mullo_epi64413  // CHECK: mul <8 x i64> %{{.*}}, %{{.*}}414  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}415  return (__m512i) _mm512_mask_mullo_epi64(__W, __U, __A, __B);416}417TEST_CONSTEXPR(match_v8di(_mm512_mask_mullo_epi64((__m512i)(__v8di){-100, +200, -300, +400, -500, +600, -700, +800}, 0x0F, (__m512i)(__v8di){+1, -2, +3, -4, +5, -6, +7, -8}, (__m512i)(__v8di){-2, +3, -4, +5, -6, +7, -8, +9}), -2, -6, -12, -20, -500, +600, -700, +800));418 419__m512i test_mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B) {420  // CHECK-LABEL: test_mm512_maskz_mullo_epi64421  // CHECK: mul <8 x i64> %{{.*}}, %{{.*}}422  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}423  return (__m512i) _mm512_maskz_mullo_epi64(__U, __A, __B);424}425TEST_CONSTEXPR(match_v8di(_mm512_maskz_mullo_epi64(0x0F, (__m512i)(__v8di){+1, -2, +3, -4, +5, -6, +7, -8}, (__m512i)(__v8di){-2, +3, +4, +5, -6, +7, +8, +9}), -2, -6, +12, -20, 0, 0, 0, 0));426 427__m512d test_mm512_xor_pd (__m512d __A, __m512d __B) {428  // CHECK-LABEL: test_mm512_xor_pd429  // CHECK: xor <8 x i64>430  return (__m512d) _mm512_xor_pd(__A, __B);431}432 433__m512d test_mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {434  // CHECK-LABEL: test_mm512_mask_xor_pd435  // CHECK: xor <8 x i64>436  // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>437  // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}438  return (__m512d) _mm512_mask_xor_pd(__W, __U, __A, __B);439}440TEST_CONSTEXPR(match_m512d(_mm512_xor_pd((__m512d){-4.0, -5.0, +6.0, +7.0, +7.0, +6.0, -5.0, -4.0}, (__m512d){+0.0, -0.0, -0.0, +7.0, +7.0, -0.0, -0.0, +0.0}), -4.0, +5.0, -6.0, +0.0, +0.0, -6.0, +5.0, -4.0));441 442__m512d test_mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B) {443  // CHECK-LABEL: test_mm512_maskz_xor_pd444  // CHECK: xor <8 x i64>445  // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>446  // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}447  return (__m512d) _mm512_maskz_xor_pd(__U, __A, __B);448}449 450__m512 test_mm512_xor_ps (__m512 __A, __m512 __B) {451  // CHECK-LABEL: test_mm512_xor_ps452  // CHECK: xor <16 x i32>453  return (__m512) _mm512_xor_ps(__A, __B);454}455TEST_CONSTEXPR(match_m512(_mm512_xor_ps((__m512){-4.0f, -5.0f, +6.0f, +7.0f, +7.0f, +6.0f, -5.0f, -4.0f, -4.0f, -5.0f, +6.0f, +7.0f, +7.0f, +6.0f, -5.0f, -4.0f}, (__m512){+0.0f, -0.0f, -0.0f, +7.0f, +7.0f, -0.0f, -0.0f, +0.0f, +0.0f, -0.0f, -0.0f, +7.0f, +7.0f, -0.0f, -0.0f, +0.0f}), -4.0f, +5.0f, -6.0f, +0.0f, +0.0f, -6.0f, +5.0f, -4.0f, -4.0f, +5.0f, -6.0f, +0.0f, +0.0f, -6.0f, +5.0f, -4.0f));456 457__m512 test_mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {458  // CHECK-LABEL: test_mm512_mask_xor_ps459  // CHECK: xor <16 x i32>460  // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>461  // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}462  return (__m512) _mm512_mask_xor_ps(__W, __U, __A, __B);463}464 465__m512 test_mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B) {466  // CHECK-LABEL: test_mm512_maskz_xor_ps467  // CHECK: xor <16 x i32>468  // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>469  // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}470  return (__m512) _mm512_maskz_xor_ps(__U, __A, __B);471}472 473__m512d test_mm512_or_pd (__m512d __A, __m512d __B) {474  // CHECK-LABEL: test_mm512_or_pd475  // CHECK: or <8 x i64>476  return (__m512d) _mm512_or_pd(__A, __B);477}478TEST_CONSTEXPR(match_m512d(_mm512_or_pd((__m512d){-4.0, -5.0, +6.0, +7.0, +7.0, +6.0, -5.0, -4.0}, (__m512d){+0.0, -0.0, -0.0, +7.0, +7.0, -0.0, -0.0, +0.0}), -4.0, -5.0, -6.0, +7.0, +7.0, -6.0, -5.0, -4.0));479 480__m512d test_mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {481  // CHECK-LABEL: test_mm512_mask_or_pd482  // CHECK: or <8 x i64>483  // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>484  // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}485  return (__m512d) _mm512_mask_or_pd(__W, __U, __A, __B);486}487 488__m512d test_mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B) {489  // CHECK-LABEL: test_mm512_maskz_or_pd490  // CHECK: or <8 x i64>491  // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>492  // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}493  return (__m512d) _mm512_maskz_or_pd(__U, __A, __B);494}495 496__m512 test_mm512_or_ps (__m512 __A, __m512 __B) {497  // CHECK-LABEL: test_mm512_or_ps498  // CHECK: or <16 x i32>499  return (__m512) _mm512_or_ps(__A, __B);500}501TEST_CONSTEXPR(match_m512(_mm512_or_ps((__m512){-4.0f, -5.0f, +6.0f, +7.0f, +7.0f, +6.0f, -5.0f, -4.0f, -4.0f, -5.0f, +6.0f, +7.0f, +7.0f, +6.0f, -5.0f, -4.0f}, (__m512){+0.0f, -0.0f, -0.0f, +7.0f, +7.0f, -0.0f, -0.0f, +0.0f, +0.0f, -0.0f, -0.0f, +7.0f, +7.0f, -0.0f, -0.0f, +0.0f}), -4.0f, -5.0f, -6.0f, +7.0f, +7.0f, -6.0f, -5.0f, -4.0f, -4.0f, -5.0f, -6.0f, +7.0f, +7.0f, -6.0f, -5.0f, -4.0f));502 503__m512 test_mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {504  // CHECK-LABEL: test_mm512_mask_or_ps505  // CHECK: or <16 x i32>506  // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>507  // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}508  return (__m512) _mm512_mask_or_ps(__W, __U, __A, __B);509}510 511__m512 test_mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B) {512  // CHECK-LABEL: test_mm512_maskz_or_ps513  // CHECK: or <16 x i32>514  // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>515  // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}516  return (__m512) _mm512_maskz_or_ps(__U, __A, __B);517}518 519__m512d test_mm512_and_pd (__m512d __A, __m512d __B) {520  // CHECK-LABEL: test_mm512_and_pd521  // CHECK: and <8 x i64>522  return (__m512d) _mm512_and_pd(__A, __B);523}524TEST_CONSTEXPR(match_m512d(_mm512_and_pd((__m512d){-4.0, -5.0, +6.0, +7.0, +7.0, +6.0, -5.0, -4.0}, (__m512d){+0.0, -0.0, -0.0, +7.0, +7.0, -0.0, -0.0, +0.0}), +0.0, -0.0, +0.0, +7.0, +7.0, +0.0, -0.0, +0.0));525 526__m512d test_mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {527  // CHECK-LABEL: test_mm512_mask_and_pd528  // CHECK: and <8 x i64>529  // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>530  // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}531  return (__m512d) _mm512_mask_and_pd(__W, __U, __A, __B);532}533 534__m512d test_mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B) {535  // CHECK-LABEL: test_mm512_maskz_and_pd536  // CHECK: and <8 x i64>537  // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>538  // CHECK: select <8 x i1> %[[MASK]], <8 x double> %{{.*}}, <8 x double> %{{.*}}539  return (__m512d) _mm512_maskz_and_pd(__U, __A, __B);540}541 542__m512 test_mm512_and_ps (__m512 __A, __m512 __B) {543  // CHECK-LABEL: test_mm512_and_ps544  // CHECK: and <16 x i32>545  return (__m512) _mm512_and_ps(__A, __B);546}547TEST_CONSTEXPR(match_m512(_mm512_and_ps((__m512){-4.0f, -5.0f, +6.0f, +7.0f, +7.0f, +6.0f, -5.0f, -4.0f, -4.0f, -5.0f, +6.0f, +7.0f, +7.0f, +6.0f, -5.0f, -4.0f}, (__m512){+0.0f, -0.0f, -0.0f, +7.0f, +7.0f, -0.0f, -0.0f, +0.0f, +0.0f, -0.0f, -0.0f, +7.0f, +7.0f, -0.0f, -0.0f, +0.0f}), +0.0f, -0.0f, +0.0f, +7.0f, +7.0f, +0.0f, -0.0f, +0.0f, +0.0f, -0.0f, +0.0f, +7.0f, +7.0f, +0.0f, -0.0f, +0.0f));548 549__m512 test_mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {550  // CHECK-LABEL: test_mm512_mask_and_ps551  // CHECK: and <16 x i32>552  // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>553  // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}554  return (__m512) _mm512_mask_and_ps(__W, __U, __A, __B);555}556 557__m512 test_mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B) {558  // CHECK-LABEL: test_mm512_maskz_and_ps559  // CHECK: and <16 x i32>560  // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>561  // CHECK: select <16 x i1> %[[MASK]], <16 x float> %{{.*}}, <16 x float> %{{.*}}562  return (__m512) _mm512_maskz_and_ps(__U, __A, __B);563}564 565__m512d test_mm512_andnot_pd (__m512d __A, __m512d __B) {566  // CHECK-LABEL: test_mm512_andnot_pd567  // CHECK: xor <8 x i64> %{{.*}}, splat (i64 -1)568  // CHECK: and <8 x i64>569  return (__m512d) _mm512_andnot_pd(__A, __B);570}571TEST_CONSTEXPR(match_m512d(_mm512_andnot_pd((__m512d){-4.0, -5.0, +6.0, +7.0, +7.0, +6.0, -5.0, -4.0}, (__m512d){+0.0, -0.0, -0.0, +7.0, +7.0, -0.0, -0.0, +0.0}), +0.0, +0.0, -0.0, +0.0, +0.0, -0.0, +0.0, +0.0));572 573__m512d test_mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {574  // CHECK-LABEL: test_mm512_mask_andnot_pd575  // CHECK: xor <8 x i64> %{{.*}}, splat (i64 -1)576  // CHECK: and <8 x i64> %{{.*}}, %{{.*}}577  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}578  return (__m512d) _mm512_mask_andnot_pd(__W, __U, __A, __B);579}580 581__m512d test_mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B) {582  // CHECK-LABEL: test_mm512_maskz_andnot_pd583  // CHECK: xor <8 x i64> %{{.*}}, splat (i64 -1)584  // CHECK: and <8 x i64> %{{.*}}, %{{.*}}585  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}586  return (__m512d) _mm512_maskz_andnot_pd(__U, __A, __B);587}588 589__m512 test_mm512_andnot_ps (__m512 __A, __m512 __B) {590  // CHECK-LABEL: test_mm512_andnot_ps591  // CHECK: xor <16 x i32> %{{.*}}, splat (i32 -1)592  // CHECK: and <16 x i32>593  return (__m512) _mm512_andnot_ps(__A, __B);594}595TEST_CONSTEXPR(match_m512(_mm512_andnot_ps((__m512){-4.0f, -5.0f, +6.0f, +7.0f, +7.0f, +6.0f, -5.0f, -4.0f, -4.0f, -5.0f, +6.0f, +7.0f, +7.0f, +6.0f, -5.0f, -4.0f}, (__m512){+0.0f, -0.0f, -0.0f, +7.0f, +7.0f, -0.0f, -0.0f, +0.0f, +0.0f, -0.0f, -0.0f, +7.0f, +7.0f, -0.0f, -0.0f, +0.0f}), +0.0f, +0.0f, -0.0f, +0.0f, +0.0f, -0.0f, +0.0f, +0.0f, +0.0f, +0.0f, -0.0f, +0.0f, +0.0f, -0.0f, +0.0f, +0.0f));596 597__m512 test_mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {598  // CHECK-LABEL: test_mm512_mask_andnot_ps599  // CHECK: xor <16 x i32> %{{.*}}, splat (i32 -1)600  // CHECK: and <16 x i32> %{{.*}}, %{{.*}}601  // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}602  return (__m512) _mm512_mask_andnot_ps(__W, __U, __A, __B);603}604 605__m512 test_mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B) {606  // CHECK-LABEL: test_mm512_maskz_andnot_ps607  // CHECK: xor <16 x i32> %{{.*}}, splat (i32 -1)608  // CHECK: and <16 x i32> %{{.*}}, %{{.*}}609  // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}610  return (__m512) _mm512_maskz_andnot_ps(__U, __A, __B);611}612 613__m512i test_mm512_cvtpd_epi64(__m512d __A) {614  // CHECK-LABEL: test_mm512_cvtpd_epi64615  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512616  return _mm512_cvtpd_epi64(__A); 617}618 619__m512i test_mm512_mask_cvtpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {620  // CHECK-LABEL: test_mm512_mask_cvtpd_epi64621  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512622  return _mm512_mask_cvtpd_epi64(__W, __U, __A); 623}624 625__m512i test_mm512_maskz_cvtpd_epi64(__mmask8 __U, __m512d __A) {626  // CHECK-LABEL: test_mm512_maskz_cvtpd_epi64627  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512628  return _mm512_maskz_cvtpd_epi64(__U, __A); 629}630 631__m512i test_mm512_cvt_roundpd_epi64(__m512d __A) {632  // CHECK-LABEL: test_mm512_cvt_roundpd_epi64633  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512634  return _mm512_cvt_roundpd_epi64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 635}636 637__m512i test_mm512_mask_cvt_roundpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {638  // CHECK-LABEL: test_mm512_mask_cvt_roundpd_epi64639  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512640  return _mm512_mask_cvt_roundpd_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 641}642 643__m512i test_mm512_maskz_cvt_roundpd_epi64(__mmask8 __U, __m512d __A) {644  // CHECK-LABEL: test_mm512_maskz_cvt_roundpd_epi64645  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.512646  return _mm512_maskz_cvt_roundpd_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 647}648 649__m512i test_mm512_cvtpd_epu64(__m512d __A) {650  // CHECK-LABEL: test_mm512_cvtpd_epu64651  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512652  return _mm512_cvtpd_epu64(__A); 653}654 655__m512i test_mm512_mask_cvtpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {656  // CHECK-LABEL: test_mm512_mask_cvtpd_epu64657  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512658  return _mm512_mask_cvtpd_epu64(__W, __U, __A); 659}660 661__m512i test_mm512_maskz_cvtpd_epu64(__mmask8 __U, __m512d __A) {662  // CHECK-LABEL: test_mm512_maskz_cvtpd_epu64663  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512664  return _mm512_maskz_cvtpd_epu64(__U, __A); 665}666 667__m512i test_mm512_cvt_roundpd_epu64(__m512d __A) {668  // CHECK-LABEL: test_mm512_cvt_roundpd_epu64669  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512670  return _mm512_cvt_roundpd_epu64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 671}672 673__m512i test_mm512_mask_cvt_roundpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {674  // CHECK-LABEL: test_mm512_mask_cvt_roundpd_epu64675  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512676  return _mm512_mask_cvt_roundpd_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 677}678 679__m512i test_mm512_maskz_cvt_roundpd_epu64(__mmask8 __U, __m512d __A) {680  // CHECK-LABEL: test_mm512_maskz_cvt_roundpd_epu64681  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.512682  return _mm512_maskz_cvt_roundpd_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 683}684 685__m512i test_mm512_cvtps_epi64(__m256 __A) {686  // CHECK-LABEL: test_mm512_cvtps_epi64687  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512688  return _mm512_cvtps_epi64(__A); 689}690 691__m512i test_mm512_mask_cvtps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {692  // CHECK-LABEL: test_mm512_mask_cvtps_epi64693  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512694  return _mm512_mask_cvtps_epi64(__W, __U, __A); 695}696 697__m512i test_mm512_maskz_cvtps_epi64(__mmask8 __U, __m256 __A) {698  // CHECK-LABEL: test_mm512_maskz_cvtps_epi64699  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512700  return _mm512_maskz_cvtps_epi64(__U, __A); 701}702 703__m512i test_mm512_cvt_roundps_epi64(__m256 __A) {704  // CHECK-LABEL: test_mm512_cvt_roundps_epi64705  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512706  return _mm512_cvt_roundps_epi64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 707}708 709__m512i test_mm512_mask_cvt_roundps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {710  // CHECK-LABEL: test_mm512_mask_cvt_roundps_epi64711  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512712  return _mm512_mask_cvt_roundps_epi64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 713}714 715__m512i test_mm512_maskz_cvt_roundps_epi64(__mmask8 __U, __m256 __A) {716  // CHECK-LABEL: test_mm512_maskz_cvt_roundps_epi64717  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.512718  return _mm512_maskz_cvt_roundps_epi64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 719}720 721__m512i test_mm512_cvtps_epu64(__m256 __A) {722  // CHECK-LABEL: test_mm512_cvtps_epu64723  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512724  return _mm512_cvtps_epu64(__A); 725}726 727__m512i test_mm512_mask_cvtps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {728  // CHECK-LABEL: test_mm512_mask_cvtps_epu64729  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512730  return _mm512_mask_cvtps_epu64(__W, __U, __A); 731}732 733__m512i test_mm512_maskz_cvtps_epu64(__mmask8 __U, __m256 __A) {734  // CHECK-LABEL: test_mm512_maskz_cvtps_epu64735  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512736  return _mm512_maskz_cvtps_epu64(__U, __A); 737}738 739__m512i test_mm512_cvt_roundps_epu64(__m256 __A) {740  // CHECK-LABEL: test_mm512_cvt_roundps_epu64741  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512742  return _mm512_cvt_roundps_epu64(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 743}744 745__m512i test_mm512_mask_cvt_roundps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {746  // CHECK-LABEL: test_mm512_mask_cvt_roundps_epu64747  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512748  return _mm512_mask_cvt_roundps_epu64(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 749}750 751__m512i test_mm512_maskz_cvt_roundps_epu64(__mmask8 __U, __m256 __A) {752  // CHECK-LABEL: test_mm512_maskz_cvt_roundps_epu64753  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.512754  return _mm512_maskz_cvt_roundps_epu64(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 755}756 757__m512d test_mm512_cvtepi64_pd(__m512i __A) {758  // CHECK-LABEL: test_mm512_cvtepi64_pd759  // CHECK: sitofp <8 x i64> %{{.*}} to <8 x double>760  return _mm512_cvtepi64_pd(__A); 761}762 763TEST_CONSTEXPR(match_m512d(_mm512_cvtepi64_pd((__m512i)(__v8di){-1, -1, 2, 2, -4, -4, 8, 8}), -1.0, -1.0, 2.0, 2.0, -4.0, -4.0, 8.0, 8.0));764 765__m512d test_mm512_mask_cvtepi64_pd(__m512d __W, __mmask8 __U, __m512i __A) {766  // CHECK-LABEL: test_mm512_mask_cvtepi64_pd767  // CHECK: sitofp <8 x i64> %{{.*}} to <8 x double>768  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}769  return _mm512_mask_cvtepi64_pd(__W, __U, __A); 770}771 772TEST_CONSTEXPR(match_m512d(_mm512_mask_cvtepi64_pd(_mm512_set1_pd(-777.0), /*1010 0101=*/0xa5, (__m512i)(__v8di){-1, -1, 2, 2, -4, -4, 8, 8}), -1.0, -777.0, 2.0, -777.0, -777.0, -4.0, -777.0, 8.0));773 774__m512d test_mm512_maskz_cvtepi64_pd(__mmask8 __U, __m512i __A) {775  // CHECK-LABEL: test_mm512_maskz_cvtepi64_pd776  // CHECK: sitofp <8 x i64> %{{.*}} to <8 x double>777  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}778  return _mm512_maskz_cvtepi64_pd(__U, __A); 779}780 781TEST_CONSTEXPR(match_m512d(_mm512_maskz_cvtepi64_pd(/*1010 0101=*/0xa5, (__m512i)(__v8di){-1, -1, 2, 2, -4, -4, 8, 8}), -1.0, 0.0, 2.0, 0.0, 0.0, -4.0, 0.0, 8.0));782 783__m512d test_mm512_cvt_roundepi64_pd(__m512i __A) {784  // CHECK-LABEL: test_mm512_cvt_roundepi64_pd785  // CHECK: @llvm.x86.avx512.sitofp.round.v8f64.v8i64786  return _mm512_cvt_roundepi64_pd(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 787}788 789__m512d test_mm512_mask_cvt_roundepi64_pd(__m512d __W, __mmask8 __U, __m512i __A) {790  // CHECK-LABEL: test_mm512_mask_cvt_roundepi64_pd791  // CHECK: @llvm.x86.avx512.sitofp.round.v8f64.v8i64792  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}793  return _mm512_mask_cvt_roundepi64_pd(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 794}795 796__m512d test_mm512_maskz_cvt_roundepi64_pd(__mmask8 __U, __m512i __A) {797  // CHECK-LABEL: test_mm512_maskz_cvt_roundepi64_pd798  // CHECK: @llvm.x86.avx512.sitofp.round.v8f64.v8i64799  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}800  return _mm512_maskz_cvt_roundepi64_pd(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 801}802 803__m256 test_mm512_cvtepi64_ps(__m512i __A) {804  // CHECK-LABEL: test_mm512_cvtepi64_ps805  // CHECK: sitofp <8 x i64> %{{.*}} to <8 x float>806  return _mm512_cvtepi64_ps(__A); 807}808 809__m256 test_mm512_mask_cvtepi64_ps(__m256 __W, __mmask8 __U, __m512i __A) {810  // CHECK-LABEL: test_mm512_mask_cvtepi64_ps811  // CHECK: sitofp <8 x i64> %{{.*}} to <8 x float>812  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}813  return _mm512_mask_cvtepi64_ps(__W, __U, __A); 814}815 816__m256 test_mm512_maskz_cvtepi64_ps(__mmask8 __U, __m512i __A) {817  // CHECK-LABEL: test_mm512_maskz_cvtepi64_ps818  // CHECK: sitofp <8 x i64> %{{.*}} to <8 x float>819  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}820  return _mm512_maskz_cvtepi64_ps(__U, __A); 821}822 823__m256 test_mm512_cvt_roundepi64_ps(__m512i __A) {824  // CHECK-LABEL: test_mm512_cvt_roundepi64_ps825  // CHECK: @llvm.x86.avx512.sitofp.round.v8f32.v8i64826  return _mm512_cvt_roundepi64_ps(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 827}828 829__m256 test_mm512_mask_cvt_roundepi64_ps(__m256 __W, __mmask8 __U, __m512i __A) {830  // CHECK-LABEL: test_mm512_mask_cvt_roundepi64_ps831  // CHECK: @llvm.x86.avx512.sitofp.round.v8f32.v8i64832  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}833  return _mm512_mask_cvt_roundepi64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 834}835 836__m256 test_mm512_maskz_cvt_roundepi64_ps(__mmask8 __U, __m512i __A) {837  // CHECK-LABEL: test_mm512_maskz_cvt_roundepi64_ps838  // CHECK: @llvm.x86.avx512.sitofp.round.v8f32.v8i64839  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}840  return _mm512_maskz_cvt_roundepi64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 841}842 843__m512i test_mm512_cvttpd_epi64(__m512d __A) {844  // CHECK-LABEL: test_mm512_cvttpd_epi64845  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512846  return _mm512_cvttpd_epi64(__A); 847}848 849__m512i test_mm512_mask_cvttpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {850  // CHECK-LABEL: test_mm512_mask_cvttpd_epi64851  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512852  return _mm512_mask_cvttpd_epi64(__W, __U, __A); 853}854 855__m512i test_mm512_maskz_cvttpd_epi64(__mmask8 __U, __m512d __A) {856  // CHECK-LABEL: test_mm512_maskz_cvttpd_epi64857  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512858  return _mm512_maskz_cvttpd_epi64(__U, __A); 859}860 861__m512i test_mm512_cvtt_roundpd_epi64(__m512d __A) {862  // CHECK-LABEL: test_mm512_cvtt_roundpd_epi64863  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512864  return _mm512_cvtt_roundpd_epi64(__A, _MM_FROUND_NO_EXC);865}866 867__m512i test_mm512_mask_cvtt_roundpd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {868  // CHECK-LABEL: test_mm512_mask_cvtt_roundpd_epi64869  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512870  return _mm512_mask_cvtt_roundpd_epi64(__W, __U, __A, _MM_FROUND_NO_EXC);871}872 873__m512i test_mm512_maskz_cvtt_roundpd_epi64(__mmask8 __U, __m512d __A) {874  // CHECK-LABEL: test_mm512_maskz_cvtt_roundpd_epi64875  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.512876  return _mm512_maskz_cvtt_roundpd_epi64(__U, __A, _MM_FROUND_NO_EXC);877}878 879__m512i test_mm512_cvttpd_epu64(__m512d __A) {880  // CHECK-LABEL: test_mm512_cvttpd_epu64881  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512882  return _mm512_cvttpd_epu64(__A); 883}884 885__m512i test_mm512_mask_cvttpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {886  // CHECK-LABEL: test_mm512_mask_cvttpd_epu64887  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512888  return _mm512_mask_cvttpd_epu64(__W, __U, __A); 889}890 891__m512i test_mm512_maskz_cvttpd_epu64(__mmask8 __U, __m512d __A) {892  // CHECK-LABEL: test_mm512_maskz_cvttpd_epu64893  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512894  return _mm512_maskz_cvttpd_epu64(__U, __A); 895}896 897__m512i test_mm512_cvtt_roundpd_epu64(__m512d __A) {898  // CHECK-LABEL: test_mm512_cvtt_roundpd_epu64899  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512900  return _mm512_cvtt_roundpd_epu64(__A, _MM_FROUND_NO_EXC);901}902 903__m512i test_mm512_mask_cvtt_roundpd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {904  // CHECK-LABEL: test_mm512_mask_cvtt_roundpd_epu64905  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512906  return _mm512_mask_cvtt_roundpd_epu64(__W, __U, __A, _MM_FROUND_NO_EXC);907}908 909__m512i test_mm512_maskz_cvtt_roundpd_epu64(__mmask8 __U, __m512d __A) {910  // CHECK-LABEL: test_mm512_maskz_cvtt_roundpd_epu64911  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.512912  return _mm512_maskz_cvtt_roundpd_epu64(__U, __A, _MM_FROUND_NO_EXC);913}914 915__m512i test_mm512_cvttps_epi64(__m256 __A) {916  // CHECK-LABEL: test_mm512_cvttps_epi64917  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512918  return _mm512_cvttps_epi64(__A); 919}920 921__m512i test_mm512_mask_cvttps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {922  // CHECK-LABEL: test_mm512_mask_cvttps_epi64923  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512924  return _mm512_mask_cvttps_epi64(__W, __U, __A); 925}926 927__m512i test_mm512_maskz_cvttps_epi64(__mmask8 __U, __m256 __A) {928  // CHECK-LABEL: test_mm512_maskz_cvttps_epi64929  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512930  return _mm512_maskz_cvttps_epi64(__U, __A); 931}932 933__m512i test_mm512_cvtt_roundps_epi64(__m256 __A) {934  // CHECK-LABEL: test_mm512_cvtt_roundps_epi64935  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512936  return _mm512_cvtt_roundps_epi64(__A, _MM_FROUND_NO_EXC);937}938 939__m512i test_mm512_mask_cvtt_roundps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {940  // CHECK-LABEL: test_mm512_mask_cvtt_roundps_epi64941  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512942  return _mm512_mask_cvtt_roundps_epi64(__W, __U, __A, _MM_FROUND_NO_EXC);943}944 945__m512i test_mm512_maskz_cvtt_roundps_epi64(__mmask8 __U, __m256 __A) {946  // CHECK-LABEL: test_mm512_maskz_cvtt_roundps_epi64947  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.512948  return _mm512_maskz_cvtt_roundps_epi64(__U, __A, _MM_FROUND_NO_EXC);949}950 951__m512i test_mm512_cvttps_epu64(__m256 __A) {952  // CHECK-LABEL: test_mm512_cvttps_epu64953  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512954  return _mm512_cvttps_epu64(__A); 955}956 957__m512i test_mm512_mask_cvttps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {958  // CHECK-LABEL: test_mm512_mask_cvttps_epu64959  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512960  return _mm512_mask_cvttps_epu64(__W, __U, __A); 961}962 963__m512i test_mm512_maskz_cvttps_epu64(__mmask8 __U, __m256 __A) {964  // CHECK-LABEL: test_mm512_maskz_cvttps_epu64965  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512966  return _mm512_maskz_cvttps_epu64(__U, __A); 967}968 969__m512i test_mm512_cvtt_roundps_epu64(__m256 __A) {970  // CHECK-LABEL: test_mm512_cvtt_roundps_epu64971  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512972  return _mm512_cvtt_roundps_epu64(__A, _MM_FROUND_NO_EXC);973}974 975__m512i test_mm512_mask_cvtt_roundps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {976  // CHECK-LABEL: test_mm512_mask_cvtt_roundps_epu64977  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512978  return _mm512_mask_cvtt_roundps_epu64(__W, __U, __A, _MM_FROUND_NO_EXC);979}980 981__m512i test_mm512_maskz_cvtt_roundps_epu64(__mmask8 __U, __m256 __A) {982  // CHECK-LABEL: test_mm512_maskz_cvtt_roundps_epu64983  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.512984  return _mm512_maskz_cvtt_roundps_epu64(__U, __A, _MM_FROUND_NO_EXC);985}986 987__m512d test_mm512_cvtepu64_pd(__m512i __A) {988  // CHECK-LABEL: test_mm512_cvtepu64_pd989  // CHECK: uitofp <8 x i64> %{{.*}} to <8 x double>990  return _mm512_cvtepu64_pd(__A); 991}992 993TEST_CONSTEXPR(match_m512d(_mm512_cvtepu64_pd((__m512i)(__v8du){1, 1, 2, 2, 4, 4, 8, 8}), 1.0, 1.0, 2.0, 2.0, 4.0, 4.0, 8.0, 8.0));994 995__m512d test_mm512_mask_cvtepu64_pd(__m512d __W, __mmask8 __U, __m512i __A) {996  // CHECK-LABEL: test_mm512_mask_cvtepu64_pd997  // CHECK: uitofp <8 x i64> %{{.*}} to <8 x double>998  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}999  return _mm512_mask_cvtepu64_pd(__W, __U, __A); 1000}1001 1002TEST_CONSTEXPR(match_m512d(_mm512_mask_cvtepu64_pd(_mm512_set1_pd(-777.0), /*1010 0101=*/0xa5, (__m512i)(__v8du){1, 1, 2, 2, 4, 4, 8, 8}), 1.0, -777.0, 2.0, -777.0, -777.0, 4.0, -777.0, 8.0));1003 1004__m512d test_mm512_maskz_cvtepu64_pd(__mmask8 __U, __m512i __A) {1005  // CHECK-LABEL: test_mm512_maskz_cvtepu64_pd1006  // CHECK: uitofp <8 x i64> %{{.*}} to <8 x double>1007  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}1008  return _mm512_maskz_cvtepu64_pd(__U, __A); 1009}1010 1011TEST_CONSTEXPR(match_m512d(_mm512_maskz_cvtepu64_pd(/*1010 0101=*/0xa5, (__m512i)(__v8du){1, 1, 2, 2, 4, 4, 8, 8}), 1.0, 0.0, 2.0, 0.0, 0.0, 4.0, 0.0, 8.0));1012 1013__m512d test_mm512_cvt_roundepu64_pd(__m512i __A) {1014  // CHECK-LABEL: test_mm512_cvt_roundepu64_pd1015  // CHECK: @llvm.x86.avx512.uitofp.round.v8f64.v8i641016  return _mm512_cvt_roundepu64_pd(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1017}1018 1019__m512d test_mm512_mask_cvt_roundepu64_pd(__m512d __W, __mmask8 __U, __m512i __A) {1020  // CHECK-LABEL: test_mm512_mask_cvt_roundepu64_pd1021  // CHECK: @llvm.x86.avx512.uitofp.round.v8f64.v8i641022  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}1023  return _mm512_mask_cvt_roundepu64_pd(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1024}1025 1026__m512d test_mm512_maskz_cvt_roundepu64_pd(__mmask8 __U, __m512i __A) {1027  // CHECK-LABEL: test_mm512_maskz_cvt_roundepu64_pd1028  // CHECK: @llvm.x86.avx512.uitofp.round.v8f64.v8i641029  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}1030  return _mm512_maskz_cvt_roundepu64_pd(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1031}1032 1033__m256 test_mm512_cvtepu64_ps(__m512i __A) {1034  // CHECK-LABEL: test_mm512_cvtepu64_ps1035  // CHECK: uitofp <8 x i64> %{{.*}} to <8 x float>1036  return _mm512_cvtepu64_ps(__A); 1037}1038 1039__m256 test_mm512_mask_cvtepu64_ps(__m256 __W, __mmask8 __U, __m512i __A) {1040  // CHECK-LABEL: test_mm512_mask_cvtepu64_ps1041  // CHECK: uitofp <8 x i64> %{{.*}} to <8 x float>1042  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}1043  return _mm512_mask_cvtepu64_ps(__W, __U, __A); 1044}1045 1046__m256 test_mm512_maskz_cvtepu64_ps(__mmask8 __U, __m512i __A) {1047  // CHECK-LABEL: test_mm512_maskz_cvtepu64_ps1048  // CHECK: uitofp <8 x i64> %{{.*}} to <8 x float>1049  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}1050  return _mm512_maskz_cvtepu64_ps(__U, __A); 1051}1052 1053__m256 test_mm512_cvt_roundepu64_ps(__m512i __A) {1054  // CHECK-LABEL: test_mm512_cvt_roundepu64_ps1055  // CHECK: @llvm.x86.avx512.uitofp.round.v8f32.v8i641056  return _mm512_cvt_roundepu64_ps(__A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1057}1058 1059__m256 test_mm512_mask_cvt_roundepu64_ps(__m256 __W, __mmask8 __U, __m512i __A) {1060  // CHECK-LABEL: test_mm512_mask_cvt_roundepu64_ps1061  // CHECK: @llvm.x86.avx512.uitofp.round.v8f32.v8i641062  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}1063  return _mm512_mask_cvt_roundepu64_ps(__W, __U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1064}1065 1066__m256 test_mm512_maskz_cvt_roundepu64_ps(__mmask8 __U, __m512i __A) {1067  // CHECK-LABEL: test_mm512_maskz_cvt_roundepu64_ps1068  // CHECK: @llvm.x86.avx512.uitofp.round.v8f32.v8i641069  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}1070  return _mm512_maskz_cvt_roundepu64_ps(__U, __A, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC); 1071}1072 1073__m512d test_mm512_range_pd(__m512d __A, __m512d __B) {1074  // CHECK-LABEL: test_mm512_range_pd1075  // CHECK: @llvm.x86.avx512.mask.range.pd.5121076  return _mm512_range_pd(__A, __B, 4); 1077}1078 1079__m512d test_mm512_mask_range_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {1080  // CHECK-LABEL: test_mm512_mask_range_pd1081  // CHECK: @llvm.x86.avx512.mask.range.pd.5121082  return _mm512_mask_range_pd(__W, __U, __A, __B, 4); 1083}1084 1085__m512d test_mm512_maskz_range_pd(__mmask8 __U, __m512d __A, __m512d __B) {1086  // CHECK-LABEL: test_mm512_maskz_range_pd1087  // CHECK: @llvm.x86.avx512.mask.range.pd.5121088  return _mm512_maskz_range_pd(__U, __A, __B, 4); 1089}1090 1091__m512d test_mm512_range_round_pd(__m512d __A, __m512d __B) {1092  // CHECK-LABEL: test_mm512_range_round_pd1093  // CHECK: @llvm.x86.avx512.mask.range.pd.5121094  return _mm512_range_round_pd(__A, __B, 4, 8); 1095}1096 1097__m512d test_mm512_mask_range_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {1098  // CHECK-LABEL: test_mm512_mask_range_round_pd1099  // CHECK: @llvm.x86.avx512.mask.range.pd.5121100  return _mm512_mask_range_round_pd(__W, __U, __A, __B, 4, 8); 1101}1102 1103__m512d test_mm512_maskz_range_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {1104  // CHECK-LABEL: test_mm512_maskz_range_round_pd1105  // CHECK: @llvm.x86.avx512.mask.range.pd.5121106  return _mm512_maskz_range_round_pd(__U, __A, __B, 4, 8); 1107}1108 1109__m128d test_mm512_range_round_sd(__m128d __A, __m128d __B) {1110  // CHECK-LABEL: test_mm512_range_round_sd1111  // CHECK: @llvm.x86.avx512.mask.range.sd1112  return _mm_range_round_sd(__A, __B, 4, 8); 1113}1114 1115__m128d test_mm512_mask_range_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {1116  // CHECK-LABEL: test_mm512_mask_range_round_sd1117  // CHECK: @llvm.x86.avx512.mask.range.sd1118  return _mm_mask_range_round_sd(__W, __U, __A, __B, 4, 8); 1119}1120 1121__m128d test_mm512_maskz_range_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {1122  // CHECK-LABEL: test_mm512_maskz_range_round_sd1123  // CHECK: @llvm.x86.avx512.mask.range.sd1124  return _mm_maskz_range_round_sd(__U, __A, __B, 4, 8); 1125}1126 1127__m128 test_mm512_range_round_ss(__m128 __A, __m128 __B) {1128  // CHECK-LABEL: test_mm512_range_round_ss1129  // CHECK: @llvm.x86.avx512.mask.range.ss1130  return _mm_range_round_ss(__A, __B, 4, 8); 1131}1132 1133__m128 test_mm512_mask_range_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {1134  // CHECK-LABEL: test_mm512_mask_range_round_ss1135  // CHECK: @llvm.x86.avx512.mask.range.ss1136  return _mm_mask_range_round_ss(__W, __U, __A, __B, 4, 8); 1137}1138 1139__m128 test_mm512_maskz_range_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {1140  // CHECK-LABEL: test_mm512_maskz_range_round_ss1141  // CHECK: @llvm.x86.avx512.mask.range.ss1142  return _mm_maskz_range_round_ss(__U, __A, __B, 4, 8); 1143}1144 1145__m128d test_mm_range_sd(__m128d __A, __m128d __B) {1146  // CHECK-LABEL: test_mm_range_sd1147  // CHECK: @llvm.x86.avx512.mask.range.sd1148  return _mm_range_sd(__A, __B, 4); 1149}1150 1151__m128d test_mm_mask_range_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {1152  // CHECK-LABEL: test_mm_mask_range_sd1153  // CHECK: @llvm.x86.avx512.mask.range.sd1154  return _mm_mask_range_sd(__W, __U, __A, __B, 4); 1155}1156 1157__m128d test_mm_maskz_range_sd(__mmask8 __U, __m128d __A, __m128d __B) {1158  // CHECK-LABEL: test_mm_maskz_range_sd1159  // CHECK: @llvm.x86.avx512.mask.range.sd1160  return _mm_maskz_range_sd(__U, __A, __B, 4); 1161}1162 1163__m128 test_mm_range_ss(__m128 __A, __m128 __B) {1164  // CHECK-LABEL: test_mm_range_ss1165  // CHECK: @llvm.x86.avx512.mask.range.ss1166  return _mm_range_ss(__A, __B, 4); 1167}1168 1169__m128 test_mm_mask_range_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {1170  // CHECK-LABEL: test_mm_mask_range_ss1171  // CHECK: @llvm.x86.avx512.mask.range.ss1172  return _mm_mask_range_ss(__W, __U, __A, __B, 4); 1173}1174 1175__m128 test_mm_maskz_range_ss(__mmask8 __U, __m128 __A, __m128 __B) {1176  // CHECK-LABEL: test_mm_maskz_range_ss1177  // CHECK: @llvm.x86.avx512.mask.range.ss1178  return _mm_maskz_range_ss(__U, __A, __B, 4); 1179}1180 1181__m512 test_mm512_range_ps(__m512 __A, __m512 __B) {1182  // CHECK-LABEL: test_mm512_range_ps1183  // CHECK: @llvm.x86.avx512.mask.range.ps.5121184  return _mm512_range_ps(__A, __B, 4); 1185}1186 1187__m512 test_mm512_mask_range_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {1188  // CHECK-LABEL: test_mm512_mask_range_ps1189  // CHECK: @llvm.x86.avx512.mask.range.ps.5121190  return _mm512_mask_range_ps(__W, __U, __A, __B, 4); 1191}1192 1193__m512 test_mm512_maskz_range_ps(__mmask16 __U, __m512 __A, __m512 __B) {1194  // CHECK-LABEL: test_mm512_maskz_range_ps1195  // CHECK: @llvm.x86.avx512.mask.range.ps.5121196  return _mm512_maskz_range_ps(__U, __A, __B, 4); 1197}1198 1199__m512 test_mm512_range_round_ps(__m512 __A, __m512 __B) {1200  // CHECK-LABEL: test_mm512_range_round_ps1201  // CHECK: @llvm.x86.avx512.mask.range.ps.5121202  return _mm512_range_round_ps(__A, __B, 4, 8); 1203}1204 1205__m512 test_mm512_mask_range_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {1206  // CHECK-LABEL: test_mm512_mask_range_round_ps1207  // CHECK: @llvm.x86.avx512.mask.range.ps.5121208  return _mm512_mask_range_round_ps(__W, __U, __A, __B, 4, 8); 1209}1210 1211__m512 test_mm512_maskz_range_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {1212  // CHECK-LABEL: test_mm512_maskz_range_round_ps1213  // CHECK: @llvm.x86.avx512.mask.range.ps.5121214  return _mm512_maskz_range_round_ps(__U, __A, __B, 4, 8); 1215}1216 1217__m512d test_mm512_reduce_pd(__m512d __A) {1218  // CHECK-LABEL: test_mm512_reduce_pd1219  // CHECK: @llvm.x86.avx512.mask.reduce.pd.5121220  return _mm512_reduce_pd(__A, 4); 1221}1222 1223__m512d test_mm512_mask_reduce_pd(__m512d __W, __mmask8 __U, __m512d __A) {1224  // CHECK-LABEL: test_mm512_mask_reduce_pd1225  // CHECK: @llvm.x86.avx512.mask.reduce.pd.5121226  return _mm512_mask_reduce_pd(__W, __U, __A, 4); 1227}1228 1229__m512d test_mm512_maskz_reduce_pd(__mmask8 __U, __m512d __A) {1230  // CHECK-LABEL: test_mm512_maskz_reduce_pd1231  // CHECK: @llvm.x86.avx512.mask.reduce.pd.5121232  return _mm512_maskz_reduce_pd(__U, __A, 4); 1233}1234 1235__m512 test_mm512_reduce_ps(__m512 __A) {1236  // CHECK-LABEL: test_mm512_reduce_ps1237  // CHECK: @llvm.x86.avx512.mask.reduce.ps.5121238  return _mm512_reduce_ps(__A, 4); 1239}1240 1241__m512 test_mm512_mask_reduce_ps(__m512 __W, __mmask16 __U, __m512 __A) {1242  // CHECK-LABEL: test_mm512_mask_reduce_ps1243  // CHECK: @llvm.x86.avx512.mask.reduce.ps.5121244  return _mm512_mask_reduce_ps(__W, __U, __A, 4); 1245}1246 1247__m512 test_mm512_maskz_reduce_ps(__mmask16 __U, __m512 __A) {1248  // CHECK-LABEL: test_mm512_maskz_reduce_ps1249  // CHECK: @llvm.x86.avx512.mask.reduce.ps.5121250  return _mm512_maskz_reduce_ps(__U, __A, 4); 1251}1252 1253__m512d test_mm512_reduce_round_pd(__m512d __A) {1254  // CHECK-LABEL: test_mm512_reduce_round_pd1255  // CHECK: @llvm.x86.avx512.mask.reduce.pd.5121256  return _mm512_reduce_round_pd(__A, 4, 8); 1257}1258 1259__m512d test_mm512_mask_reduce_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {1260  // CHECK-LABEL: test_mm512_mask_reduce_round_pd1261  // CHECK: @llvm.x86.avx512.mask.reduce.pd.5121262  return _mm512_mask_reduce_round_pd(__W, __U, __A, 4, 8); 1263}1264 1265__m512d test_mm512_maskz_reduce_round_pd(__mmask8 __U, __m512d __A) {1266  // CHECK-LABEL: test_mm512_maskz_reduce_round_pd1267  // CHECK: @llvm.x86.avx512.mask.reduce.pd.5121268  return _mm512_maskz_reduce_round_pd(__U, __A, 4, 8);1269}1270 1271__m512 test_mm512_reduce_round_ps(__m512 __A) {1272  // CHECK-LABEL: test_mm512_reduce_round_ps1273  // CHECK: @llvm.x86.avx512.mask.reduce.ps.5121274  return _mm512_reduce_round_ps(__A, 4, 8); 1275}1276 1277__m512 test_mm512_mask_reduce_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {1278  // CHECK-LABEL: test_mm512_mask_reduce_round_ps1279  // CHECK: @llvm.x86.avx512.mask.reduce.ps.5121280  return _mm512_mask_reduce_round_ps(__W, __U, __A, 4, 8); 1281}1282 1283__m512 test_mm512_maskz_reduce_round_ps(__mmask16 __U, __m512 __A) {1284  // CHECK-LABEL: test_mm512_maskz_reduce_round_ps1285  // CHECK: @llvm.x86.avx512.mask.reduce.ps.5121286  return _mm512_maskz_reduce_round_ps(__U, __A, 4, 8); 1287}1288 1289__m128 test_mm_reduce_ss(__m128 __A, __m128 __B) {1290  // CHECK-LABEL: test_mm_reduce_ss1291  // CHECK: @llvm.x86.avx512.mask.reduce.ss1292  return _mm_reduce_ss(__A, __B, 4);1293}1294 1295__m128 test_mm_mask_reduce_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {1296  // CHECK-LABEL: test_mm_mask_reduce_ss1297  // CHECK: @llvm.x86.avx512.mask.reduce.ss1298  return _mm_mask_reduce_ss(__W, __U, __A, __B, 4);1299}1300 1301__m128 test_mm_maskz_reduce_ss(__mmask8 __U, __m128 __A, __m128 __B) {1302  // CHECK-LABEL: test_mm_maskz_reduce_ss1303  // CHECK: @llvm.x86.avx512.mask.reduce.ss1304  return _mm_maskz_reduce_ss(__U, __A, __B, 4);1305}1306 1307__m128 test_mm_reduce_round_ss(__m128 __A, __m128 __B) {1308  // CHECK-LABEL: test_mm_reduce_round_ss1309  // CHECK: @llvm.x86.avx512.mask.reduce.ss1310  return _mm_reduce_round_ss(__A, __B, 4, 8);1311}1312 1313__m128 test_mm_mask_reduce_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {1314  // CHECK-LABEL: test_mm_mask_reduce_round_ss1315  // CHECK: @llvm.x86.avx512.mask.reduce.ss1316  return _mm_mask_reduce_round_ss(__W, __U, __A, __B, 4, 8);1317}1318 1319__m128 test_mm_maskz_reduce_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {1320  // CHECK-LABEL: test_mm_maskz_reduce_round_ss1321  // CHECK: @llvm.x86.avx512.mask.reduce.ss1322  return _mm_maskz_reduce_round_ss(__U, __A, __B, 4, 8);1323}1324 1325__m128d test_mm_reduce_sd(__m128d __A, __m128d __B) {1326  // CHECK-LABEL: test_mm_reduce_sd1327  // CHECK: @llvm.x86.avx512.mask.reduce.sd1328  return _mm_reduce_sd(__A, __B, 4);1329}1330 1331__m128d test_mm_mask_reduce_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {1332  // CHECK-LABEL: test_mm_mask_reduce_sd1333  // CHECK: @llvm.x86.avx512.mask.reduce.sd1334  return _mm_mask_reduce_sd(__W, __U, __A, __B, 4);1335}1336 1337__m128d test_mm_maskz_reduce_sd(__mmask8 __U, __m128d __A, __m128d __B) {1338  // CHECK-LABEL: test_mm_maskz_reduce_sd1339  // CHECK: @llvm.x86.avx512.mask.reduce.sd1340  return _mm_maskz_reduce_sd(__U, __A, __B, 4);1341}1342 1343__m128d test_mm_reduce_round_sd(__m128d __A, __m128d __B) {1344  // CHECK-LABEL: test_mm_reduce_round_sd1345  // CHECK: @llvm.x86.avx512.mask.reduce.sd1346  return _mm_reduce_round_sd(__A, __B, 4, 8);1347}1348 1349__m128d test_mm_mask_reduce_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {1350  // CHECK-LABEL: test_mm_mask_reduce_round_sd1351  // CHECK: @llvm.x86.avx512.mask.reduce.sd1352  return _mm_mask_reduce_round_sd(__W, __U, __A, __B, 4, 8);1353}1354 1355__m128d test_mm_maskz_reduce_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {1356  // CHECK-LABEL: test_mm_maskz_reduce_round_sd1357  // CHECK: @llvm.x86.avx512.mask.reduce.sd1358  return _mm_maskz_reduce_round_sd(__U, __A, __B, 4, 8);1359}1360 1361__mmask16 test_mm512_movepi32_mask(__m512i __A) {1362  // CHECK-LABEL: test_mm512_movepi32_mask1363  // CHECK: [[CMP:%.*]] = icmp slt <16 x i32> %{{.*}}, zeroinitializer1364  return _mm512_movepi32_mask(__A); 1365}1366 1367TEST_CONSTEXPR(_mm512_movepi32_mask(((__m512i)(__v16si){0, 1, -1, 3, 4, 5, 6, 7,8, 9, 10, 11, 12, 13, 14, -1})) == (__mmask16)0x8004);1368 1369__m512i test_mm512_movm_epi32(__mmask16 __A) {1370  // CHECK-LABEL: test_mm512_movm_epi321371  // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>1372  // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i32>1373  return _mm512_movm_epi32(__A); 1374}1375 1376__m512i test_mm512_movm_epi64(__mmask8 __A) {1377  // CHECK-LABEL: test_mm512_movm_epi641378  // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>1379  // CHECK: %vpmovm2.i = sext <8 x i1> %{{.*}} to <8 x i64>1380  return _mm512_movm_epi64(__A); 1381}1382 1383__mmask8 test_mm512_movepi64_mask(__m512i __A) {1384  // CHECK-LABEL: test_mm512_movepi64_mask1385  // CHECK: [[CMP:%.*]] = icmp slt <8 x i64> %{{.*}}, zeroinitializer1386  return _mm512_movepi64_mask(__A); 1387}1388 1389TEST_CONSTEXPR(_mm512_movepi64_mask(((__m512i)(__v8di){0, 1, -1, 3, 4, 5, 6, -1})) == (__mmask8)0x84);1390 1391__m512 test_mm512_broadcast_f32x2(__m128 __A) {1392  // CHECK-LABEL: test_mm512_broadcast_f32x21393  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1394  return _mm512_broadcast_f32x2(__A); 1395}1396TEST_CONSTEXPR(match_m512(_mm512_broadcast_f32x2((__m128)(__v4sf){1.0, -2.0, 3.0, -4.0}), 1.0, -2.0, 1.0, -2.0, 1.0, -2.0, 1.0, -2.0, 1.0, -2.0, 1.0, -2.0, 1.0, -2.0, 1.0, -2.0));1397 1398__m512 test_mm512_mask_broadcast_f32x2(__m512 __O, __mmask16 __M, __m128 __A) {1399  // CHECK-LABEL: test_mm512_mask_broadcast_f32x21400  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1401  // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}1402  return _mm512_mask_broadcast_f32x2(__O, __M, __A); 1403}1404 1405__m512 test_mm512_maskz_broadcast_f32x2(__mmask16 __M, __m128 __A) {1406  // CHECK-LABEL: test_mm512_maskz_broadcast_f32x21407  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1408  // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}1409  return _mm512_maskz_broadcast_f32x2(__M, __A); 1410}1411 1412__m512 test_mm512_broadcast_f32x8(float const* __A) {1413  // CHECK-LABEL: test_mm512_broadcast_f32x81414  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1415  return _mm512_broadcast_f32x8(_mm256_loadu_ps(__A)); 1416}1417TEST_CONSTEXPR(match_m512(_mm512_broadcast_f32x8((__m256)(__v8sf){1.0f, 2.0f, 3.0f, 4.0f, -5.0f, -6.0f, -7.0f, -8.0f}), 1.0f, 2.0f, 3.0f, 4.0f, -5.0f, -6.0f, -7.0f, -8.0f, 1.0f, 2.0f, 3.0f, 4.0f, -5.0f, -6.0f, -7.0f, -8.0f));1418 1419__m512 test_mm512_mask_broadcast_f32x8(__m512 __O, __mmask16 __M, float const* __A) {1420  // CHECK-LABEL: test_mm512_mask_broadcast_f32x81421  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1422  // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}1423  return _mm512_mask_broadcast_f32x8(__O, __M, _mm256_loadu_ps(__A)); 1424}1425TEST_CONSTEXPR(match_m512(_mm512_mask_broadcast_f32x8(_mm512_setzero_ps(), 0xAAAA, (__m256)(__v8sf){5.0f,5.0f,5.0f,5.0f,5.0f,5.0f,5.0f,5.0f}), 0,5,0,5,0,5,0,5,0,5,0,5,0,5,0,5));1426 1427__m512 test_mm512_maskz_broadcast_f32x8(__mmask16 __M, float const* __A) {1428  // CHECK-LABEL: test_mm512_maskz_broadcast_f32x81429  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1430  // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}1431  return _mm512_maskz_broadcast_f32x8(__M, _mm256_loadu_ps(__A)); 1432}1433TEST_CONSTEXPR(match_m512(_mm512_maskz_broadcast_f32x8(0xAAAA, _mm256_set1_ps(7.0f)), 0,7,0,7,0,7,0,7,0,7,0,7,0,7,0,7));1434 1435__m512d test_mm512_broadcast_f64x2(double const* __A) {1436  // CHECK-LABEL: test_mm512_broadcast_f64x21437  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1438  return _mm512_broadcast_f64x2(_mm_loadu_pd(__A)); 1439}1440TEST_CONSTEXPR(match_m512d(_mm512_broadcast_f64x2((__m128d)(__v2df){1.0, -2.0}), 1.0, -2.0, 1.0, -2.0, 1.0, -2.0, 1.0, -2.0));1441 1442__m512d test_mm512_mask_broadcast_f64x2(__m512d __O, __mmask8 __M, double const* __A) {1443  // CHECK-LABEL: test_mm512_mask_broadcast_f64x21444  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1445  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}1446  return _mm512_mask_broadcast_f64x2(__O, __M, _mm_loadu_pd(__A)); 1447}1448 1449TEST_CONSTEXPR(match_m512d(_mm512_mask_broadcast_f64x2(_mm512_setzero_pd(), 0xAA, (__m128d)(__v2df){1,2}), 0,2,0,2,0,2,0,2));1450 1451__m512d test_mm512_maskz_broadcast_f64x2(__mmask8 __M, double const* __A) {1452  // CHECK-LABEL: test_mm512_maskz_broadcast_f64x21453  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1454  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}1455  return _mm512_maskz_broadcast_f64x2(__M, _mm_loadu_pd(__A)); 1456}1457 1458TEST_CONSTEXPR(match_m512d(_mm512_maskz_broadcast_f64x2(0xAA, (__m128d)(__v2df){1,2}), 0,2,0,2,0,2,0,2));1459 1460__m512i test_mm512_broadcast_i32x2(__m128i __A) {1461  // CHECK-LABEL: test_mm512_broadcast_i32x21462  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1463  return _mm512_broadcast_i32x2(__A); 1464}1465TEST_CONSTEXPR(match_v16si(_mm512_broadcast_i32x2((__m128i)(__v4si){1, -2, 3, -4}), 1, -2, 1, -2, 1, -2, 1, -2, 1, -2, 1, -2, 1, -2, 1, -2));1466 1467__m512i test_mm512_mask_broadcast_i32x2(__m512i __O, __mmask16 __M, __m128i __A) {1468  // CHECK-LABEL: test_mm512_mask_broadcast_i32x21469  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1470  // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}1471  return _mm512_mask_broadcast_i32x2(__O, __M, __A); 1472}1473 1474TEST_CONSTEXPR(match_v16si(_mm512_mask_broadcast_i32x2(_mm512_setzero_si512(), 0xAAAA, (__m128i)(__v4si){0,1,2,3}), 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1));1475 1476__m512i test_mm512_maskz_broadcast_i32x2(__mmask16 __M, __m128i __A) {1477  // CHECK-LABEL: test_mm512_maskz_broadcast_i32x21478  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1479  // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}1480  return _mm512_maskz_broadcast_i32x2(__M, __A); 1481}1482 1483TEST_CONSTEXPR(match_v16si(_mm512_maskz_broadcast_i32x2(0xAAAA, (__m128i)(__v4si){0,1,2,3}), 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1));1484 1485__m512i test_mm512_broadcast_i32x8(__m256i const* __A) {1486  // CHECK-LABEL: test_mm512_broadcast_i32x81487  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1488  return _mm512_broadcast_i32x8(_mm256_loadu_si256(__A)); 1489}1490TEST_CONSTEXPR(match_v16si(_mm512_broadcast_i32x8((__m256i)(__v8si){1, 2, 3, 4, -5, -6, -7, -8}), 1, 2, 3, 4, -5, -6, -7, -8, 1, 2, 3, 4, -5, -6, -7, -8));1491 1492__m512i test_mm512_mask_broadcast_i32x8(__m512i __O, __mmask16 __M, __m256i const* __A) {1493  // CHECK-LABEL: test_mm512_mask_broadcast_i32x81494  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1495  // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}1496  return _mm512_mask_broadcast_i32x8(__O, __M, _mm256_loadu_si256(__A)); 1497}1498TEST_CONSTEXPR(match_v16si(_mm512_mask_broadcast_i32x8(_mm512_setzero_si512(), 0xAAAA, _mm256_set1_epi32(8)), 0,8,0,8,0,8,0,8,0,8,0,8,0,8,0,8));1499 1500__m512i test_mm512_maskz_broadcast_i32x8(__mmask16 __M, __m256i const* __A) {1501  // CHECK-LABEL: test_mm512_maskz_broadcast_i32x81502  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1503  // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}1504  return _mm512_maskz_broadcast_i32x8(__M, _mm256_loadu_si256(__A)); 1505}1506 1507TEST_CONSTEXPR(match_v16si(_mm512_maskz_broadcast_i32x8(0xAAAA, _mm256_set1_epi32(9)), 0,9,0,9,0,9,0,9,0,9,0,9,0,9,0,9));1508 1509__m512i test_mm512_broadcast_i64x2(__m128i const* __A) {1510  // CHECK-LABEL: test_mm512_broadcast_i64x21511  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1512  return _mm512_broadcast_i64x2(_mm_loadu_si128(__A)); 1513}1514TEST_CONSTEXPR(match_v8di(_mm512_broadcast_i64x2((__m128i)(__v2di){1, -2}), 1, -2, 1, -2, 1, -2, 1, -2));1515 1516__m512i test_mm512_mask_broadcast_i64x2(__m512i __O, __mmask8 __M, __m128i const* __A) {1517  // CHECK-LABEL: test_mm512_mask_broadcast_i64x21518  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1519  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}1520  return _mm512_mask_broadcast_i64x2(__O, __M, _mm_loadu_si128(__A)); 1521}1522 1523__m512i test_mm512_maskz_broadcast_i64x2(__mmask8 __M, __m128i const* __A) {1524  // CHECK-LABEL: test_mm512_maskz_broadcast_i64x21525  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1526  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}1527  return _mm512_maskz_broadcast_i64x2(__M, _mm_loadu_si128(__A)); 1528}1529 1530__m256 test_mm512_extractf32x8_ps(__m512 __A) {1531  // CHECK-LABEL: test_mm512_extractf32x8_ps1532  // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>1533  return _mm512_extractf32x8_ps(__A, 1); 1534}1535TEST_CONSTEXPR(match_m256(_mm512_extractf32x8_ps(((__m512){0.0f,1.0f,2.0f,3.0f, 4.0f,5.0f,6.0f,7.0f,8.0f,9.0f,10.0f,11.0f, 12.0f,13.0f,14.0f,15.0f}), 1),8.0f,  9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f));1536 1537__m256 test_mm512_mask_extractf32x8_ps(__m256 __W, __mmask8 __U, __m512 __A) {1538  // CHECK-LABEL: test_mm512_mask_extractf32x8_ps1539  // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>1540  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}1541  return _mm512_mask_extractf32x8_ps(__W, __U, __A, 1); 1542}1543TEST_CONSTEXPR(match_m256(_mm512_mask_extractf32x8_ps(((__m256)(__v8sf){0,0,0,0,0,0,0,0}),    (__mmask8)0xFF,((__m512)(__v16sf){0.0f,1.0f,2.0f,3.0f,4.0f,5.0f,6.0f,7.0f,8.0f,9.0f,10.0f,11.0f,12.0f,13.0f,14.0f,15.0f}),1),8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f));1544 1545__m256 test_mm512_maskz_extractf32x8_ps(__mmask8 __U, __m512 __A) {1546  // CHECK-LABEL: test_mm512_maskz_extractf32x8_ps1547  // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>1548  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}1549  return _mm512_maskz_extractf32x8_ps(__U, __A, 1); 1550}1551TEST_CONSTEXPR(match_m256(_mm512_maskz_extractf32x8_ps((__mmask8)0x0F, ((__m512)(__v16sf){0.0f,1.0f,2.0f,3.0f,4.0f,5.0f,6.0f,7.0f,8.0f,9.0f,10.0f,11.0f,12.0f,13.0f,14.0f,15.0f}),1),8.0f,  9.0f, 10.0f, 11.0f,  0.0f,  0.0f,  0.0f,  0.0f));1552 1553__m128d test_mm512_extractf64x2_pd(__m512d __A) {1554  // CHECK-LABEL: test_mm512_extractf64x2_pd1555  // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <2 x i32> <i32 6, i32 7>1556  return _mm512_extractf64x2_pd(__A, 3); 1557}1558TEST_CONSTEXPR(match_m128d(_mm512_extractf64x2_pd(((__m512d){0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0}), 3),6.0, 7.0));1559 1560__m128d test_mm512_mask_extractf64x2_pd(__m128d __W, __mmask8 __U, __m512d __A) {1561  // CHECK-LABEL: test_mm512_mask_extractf64x2_pd1562  // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <2 x i32> <i32 6, i32 7>1563  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}1564  return _mm512_mask_extractf64x2_pd(__W, __U, __A, 3); 1565}1566TEST_CONSTEXPR(match_m128d(_mm512_mask_extractf64x2_pd(((__m128d)(__v2df){100.0, 101.0}),(__mmask8)0x1,((__m512d)(__v8df){0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0}),3),6.0, 101.0));1567 1568__m128d test_mm512_maskz_extractf64x2_pd(__mmask8 __U, __m512d __A) {1569  // CHECK-LABEL: test_mm512_maskz_extractf64x2_pd1570  // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> poison, <2 x i32> <i32 6, i32 7>1571  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}1572  return _mm512_maskz_extractf64x2_pd(__U, __A, 3); 1573}1574TEST_CONSTEXPR(match_m128d(_mm512_maskz_extractf64x2_pd((__mmask8)0x2,((__m512d){0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0}),3),0.0, 7.0));1575 1576__m256i test_mm512_extracti32x8_epi32(__m512i __A) {1577  // CHECK-LABEL: test_mm512_extracti32x8_epi321578  // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>1579  return _mm512_extracti32x8_epi32(__A, 1); 1580}1581TEST_CONSTEXPR(match_v8si(_mm512_extracti32x8_epi32(((__m512i)(__v16si){0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15}), 1),8, 9,10,11,12,13,14,15));1582 1583__m256i test_mm512_mask_extracti32x8_epi32(__m256i __W, __mmask8 __U, __m512i __A) {1584  // CHECK-LABEL: test_mm512_mask_extracti32x8_epi321585  // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>1586  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}1587  return _mm512_mask_extracti32x8_epi32(__W, __U, __A, 1); 1588}1589TEST_CONSTEXPR(match_v8si(_mm512_mask_extracti32x8_epi32(((__m256i)(__v8si){100,101,102,103,104,105,106,107}), (__mmask8)0xAA,((__m512i)(__v16si){0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15}),1),100, 9, 102, 11, 104, 13, 106, 15));1590 1591__m256i test_mm512_maskz_extracti32x8_epi32(__mmask8 __U, __m512i __A) {1592  // CHECK-LABEL: test_mm512_maskz_extracti32x8_epi321593  // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>1594  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}1595  return _mm512_maskz_extracti32x8_epi32(__U, __A, 1); 1596}1597TEST_CONSTEXPR(match_v8si(_mm512_maskz_extracti32x8_epi32((__mmask8)0x0F,((__m512i)(__v16si){0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15}),1),8, 9, 10, 11, 0, 0, 0, 0));1598 1599__m128i test_mm512_extracti64x2_epi64(__m512i __A) {1600  // CHECK-LABEL: test_mm512_extracti64x2_epi641601  // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <2 x i32> <i32 6, i32 7>1602  return _mm512_extracti64x2_epi64(__A, 3); 1603}1604TEST_CONSTEXPR(match_m128i(_mm512_extracti64x2_epi64(((__m512i)(__v8di){0ULL,1ULL,2ULL,3ULL, 4ULL,5ULL,6ULL,7ULL}), 3),6ULL, 7ULL));1605 1606__m128i test_mm512_mask_extracti64x2_epi64(__m128i __W, __mmask8 __U, __m512i __A) {1607  // CHECK-LABEL: test_mm512_mask_extracti64x2_epi641608  // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <2 x i32> <i32 6, i32 7>1609  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1610  return _mm512_mask_extracti64x2_epi64(__W, __U, __A, 3); 1611}1612TEST_CONSTEXPR(match_m128i(_mm512_mask_extracti64x2_epi64(((__m128i)(__v2di){100ULL, 101ULL}), (__mmask8)0x1,((__m512i)(__v8di){0ULL,1ULL,2ULL,3ULL, 4ULL,5ULL,6ULL,7ULL}),3),6ULL, 101ULL));1613 1614__m128i test_mm512_maskz_extracti64x2_epi64(__mmask8 __U, __m512i __A) {1615  // CHECK-LABEL: test_mm512_maskz_extracti64x2_epi641616  // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> poison, <2 x i32> <i32 6, i32 7>1617  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1618  return _mm512_maskz_extracti64x2_epi64(__U, __A, 3); 1619}1620TEST_CONSTEXPR(match_m128i(_mm512_maskz_extracti64x2_epi64((__mmask8)0x2,((__m512i)(__v8di){0ULL,1ULL,2ULL,3ULL, 4ULL,5ULL,6ULL,7ULL}),3),0ULL, 7ULL));1621 1622__m512 test_mm512_insertf32x8(__m512 __A, __m256 __B) {1623  // CHECK-LABEL: test_mm512_insertf32x81624  // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>1625  return _mm512_insertf32x8(__A, __B, 1); 1626}1627TEST_CONSTEXPR(match_m512(_mm512_insertf32x8(((__m512){1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f}), ((__m256){20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f}), 1), 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f));1628 1629__m512 test_mm512_mask_insertf32x8(__m512 __W, __mmask16 __U, __m512 __A, __m256 __B) {1630  // CHECK-LABEL: test_mm512_mask_insertf32x81631  // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>1632  // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}1633  return _mm512_mask_insertf32x8(__W, __U, __A, __B, 1); 1634}1635TEST_CONSTEXPR(match_m512(_mm512_mask_insertf32x8(((__m512){2.0f,3.0f,4.0f,5.0f,6.0f,7.0f,8.0f,9.0f,10.0f,11.0f,12.0f,13.0f,14.0f,15.0f,16.0f,17.0f}), (0xF000), ((__m512){2.0f,3.0f,4.0f,5.0f,6.0f,7.0f,8.0f,9.0f,10.0f,11.0f,12.0f,13.0f,14.0f,15.0f,16.0f,17.0f}), ((__m256){20.0f,30.0f,40.0f,50.0f,60.0f,70.0f,80.0f,90.0f}), 1), 2.0f,3.0f,4.0f,5.0f,6.0f,7.0f,8.0f,9.0f,10.0f,11.0f,12.0f,13.0f,60.0f,70.0f,80.0f,90.0f));1636 1637__m512 test_mm512_maskz_insertf32x8(__mmask16 __U, __m512 __A, __m256 __B) {1638  // CHECK-LABEL: test_mm512_maskz_insertf32x81639  // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>1640  // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}1641  return _mm512_maskz_insertf32x8(__U, __A, __B, 1); 1642}1643TEST_CONSTEXPR(match_m512(_mm512_maskz_insertf32x8((0x0F00), ((__m512){1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f}), ((__m256){20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f, 90.0f}), 1), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 20.0f, 30.0f, 40.0f, 50.0f, 0.0f, 0.0f, 0.0f, 0.0f));1644 1645__m512d test_mm512_insertf64x2(__m512d __A, __m128d __B) {1646  // CHECK-LABEL: test_mm512_insertf64x21647  // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>1648  return _mm512_insertf64x2(__A, __B, 3); 1649}1650TEST_CONSTEXPR(match_m512d(_mm512_insertf64x2(((__m512d){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}), ((__m128d){10.0, 20.0}), 3), 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 10.0, 20.0));1651 1652__m512d test_mm512_mask_insertf64x2(__m512d __W, __mmask8 __U, __m512d __A, __m128d __B) {1653  // CHECK-LABEL: test_mm512_mask_insertf64x21654  // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>1655  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}1656  return _mm512_mask_insertf64x2(__W, __U, __A, __B, 3); 1657}1658TEST_CONSTEXPR(match_m512d(_mm512_mask_insertf64x2(((__m512d){2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0}), (0x80), ((__m512d){2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0}), ((__m128d){10.0, 20.0}), 3), 2.0,3.0,4.0,5.0,6.0,7.0,8.0,20.0));1659 1660__m512d test_mm512_maskz_insertf64x2(__mmask8 __U, __m512d __A, __m128d __B) {1661  // CHECK-LABEL: test_mm512_maskz_insertf64x21662  // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 8, i32 9>1663  // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}1664  return _mm512_maskz_insertf64x2(__U, __A, __B, 3); 1665}1666TEST_CONSTEXPR(match_m512d(_mm512_maskz_insertf64x2((0x80), ((__m512d){1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0}), ((__m128d){10.0,20.0}), 3), 0.0,0.0,0.0,0.0,0.0,0.0,0.0,20.0));1667 1668__m512i test_mm512_inserti32x8(__m512i __A, __m256i __B) {1669  // CHECK-LABEL: test_mm512_inserti32x81670  // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>1671  return _mm512_inserti32x8(__A, __B, 1); 1672}1673TEST_CONSTEXPR(match_v16si(_mm512_inserti32x8(((__m512i)(__v16si){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}), ((__m256i)(__v8si){20,30,40,50,60,70,80,90}), 1), 1, 2, 3, 4, 5, 6, 7, 8, 20, 30, 40, 50, 60, 70, 80, 90));1674 1675__m512i test_mm512_mask_inserti32x8(__m512i __W, __mmask16 __U, __m512i __A, __m256i __B) {1676  // CHECK-LABEL: test_mm512_mask_inserti32x81677  // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>1678  // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}1679  return _mm512_mask_inserti32x8(__W, __U, __A, __B, 1); 1680}1681TEST_CONSTEXPR(match_v16si(_mm512_mask_inserti32x8(((__m512i)(__v16si){2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}), (0xF000), ((__m512i)(__v16si){2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}), ((__m256i)(__v8si){20,30,40,50,60,70,80,90}), 1), 2,3,4,5,6,7,8,9,10,11,12,13,60,70,80,90));1682 1683__m512i test_mm512_maskz_inserti32x8(__mmask16 __U, __m512i __A, __m256i __B) {1684  // CHECK-LABEL: test_mm512_maskz_inserti32x81685  // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>1686  // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}1687  return _mm512_maskz_inserti32x8(__U, __A, __B, 1); 1688}1689TEST_CONSTEXPR(match_v16si(_mm512_maskz_inserti32x8((0x0F00), ((__m512i)(__v16si){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}), ((__m256i)(__v8si){20,30,40,50,60,70,80,90}), 1), 0,0,0,0,0,0,0,0,20,30,40,50,0,0,0,0));1690 1691__m512i test_mm512_inserti64x2(__m512i __A, __m128i __B) {1692  // CHECK-LABEL: test_mm512_inserti64x21693  // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 9, i32 4, i32 5, i32 6, i32 7>1694  return _mm512_inserti64x2(__A, __B, 1); 1695}1696TEST_CONSTEXPR(match_m512i(_mm512_inserti64x2(((__m512i){1, 2, 3, 4, 5, 6, 7, 8}), ((__m128i){10, 20}), 1), 1, 2, 10, 20, 5, 6, 7, 8));1697 1698__m512i test_mm512_mask_inserti64x2(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {1699  // CHECK-LABEL: test_mm512_mask_inserti64x21700  // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 9, i32 4, i32 5, i32 6, i32 7>1701  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}1702  return _mm512_mask_inserti64x2(__W, __U, __A, __B, 1); 1703}1704TEST_CONSTEXPR(match_m512i(_mm512_mask_inserti64x2(((__m512i){1,2,3,4,5,6,7,8}), (0x08), ((__m512i){1,2,3,4,5,6,7,8}), ((__m128i){10, 20}), 1), 1, 2, 3, 20, 5, 6, 7, 8));1705 1706__m512i test_mm512_maskz_inserti64x2(__mmask8 __U, __m512i __A, __m128i __B) {1707  // CHECK-LABEL: test_mm512_maskz_inserti64x21708  // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 9, i32 4, i32 5, i32 6, i32 7>1709  // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}1710  return _mm512_maskz_inserti64x2(__U, __A, __B, 1); 1711}1712TEST_CONSTEXPR(match_m512i(_mm512_maskz_inserti64x2((0x0C), ((__m512i){1,2,3,4,5,6,7,8}), ((__m128i){10, 20}), 1), 0, 0, 10, 20, 0, 0, 0, 0));1713 1714__mmask8 test_mm512_mask_fpclass_pd_mask(__mmask8 __U, __m512d __A) {1715  // CHECK-LABEL: test_mm512_mask_fpclass_pd_mask1716  // CHECK: @llvm.x86.avx512.fpclass.pd.5121717  return _mm512_mask_fpclass_pd_mask(__U, __A, 4); 1718}1719 1720__mmask8 test_mm512_fpclass_pd_mask(__m512d __A) {1721  // CHECK-LABEL: test_mm512_fpclass_pd_mask1722  // CHECK: @llvm.x86.avx512.fpclass.pd.5121723  return _mm512_fpclass_pd_mask(__A, 4); 1724}1725 1726__mmask16 test_mm512_mask_fpclass_ps_mask(__mmask16 __U, __m512 __A) {1727  // CHECK-LABEL: test_mm512_mask_fpclass_ps_mask1728  // CHECK: @llvm.x86.avx512.fpclass.ps.5121729  return _mm512_mask_fpclass_ps_mask(__U, __A, 4); 1730}1731 1732__mmask16 test_mm512_fpclass_ps_mask(__m512 __A) {1733  // CHECK-LABEL: test_mm512_fpclass_ps_mask1734  // CHECK: @llvm.x86.avx512.fpclass.ps.5121735  return _mm512_fpclass_ps_mask(__A, 4); 1736}1737 1738__mmask8 test_mm_fpclass_sd_mask(__m128d __A)  { 1739  // CHECK-LABEL: test_mm_fpclass_sd_mask1740  // CHECK: @llvm.x86.avx512.mask.fpclass.sd1741 return _mm_fpclass_sd_mask (__A, 2);1742}1743 1744__mmask8 test_mm_mask_fpclass_sd_mask(__mmask8 __U, __m128d __A)  {1745 // CHECK-LABEL: test_mm_mask_fpclass_sd_mask1746 // CHECK: @llvm.x86.avx512.mask.fpclass.sd1747 return _mm_mask_fpclass_sd_mask (__U,  __A, 2);1748}1749 1750__mmask8 test_mm_fpclass_ss_mask(__m128 __A)  { 1751 // CHECK-LABEL: test_mm_fpclass_ss_mask1752 // CHECK: @llvm.x86.avx512.mask.fpclass.ss1753 return _mm_fpclass_ss_mask ( __A, 2);1754}1755 1756__mmask8 test_mm_mask_fpclass_ss_mask(__mmask8 __U, __m128 __A)  {1757 // CHECK-LABEL: test_mm_mask_fpclass_ss_mask1758 // CHECK: @llvm.x86.avx512.mask.fpclass.ss1759 return _mm_mask_fpclass_ss_mask (__U, __A, 2);1760}1761 1762