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