brintos

brintos / llvm-project-archived public Read only

0
0
Text · 45.4 KiB · 25559d6 Raw
1086 lines · c
1// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64 -target-feature +avx10.2 -emit-llvm -o - -Wno-invalid-feature-combination -Wall -Werror | FileCheck %s2// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386 -target-feature +avx10.2 -emit-llvm -o - -Wno-invalid-feature-combination -Wall -Werror | FileCheck %s3 4#include <immintrin.h>5 6__m512bh test_mm512_setzero_pbh() {7  // CHECK-LABEL: @test_mm512_setzero_pbh8  // CHECK: zeroinitializer9  return _mm512_setzero_pbh();10}11 12__m512bh test_mm512_undefined_pbh(void) {13  // CHECK-LABEL: @test_mm512_undefined_pbh14  // CHECK: ret <32 x bfloat> zeroinitializer15  return _mm512_undefined_pbh();16}17 18__m512bh test_mm512_set1_pbh(__bf16 h) {19  // CHECK-LABEL: @test_mm512_set1_pbh20  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 021  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 122  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 223  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 324  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 425  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 526  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 627  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 728  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 829  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 930  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1031  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1132  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1233  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1334  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1435  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1536  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1637  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1738  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1839  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1940  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2041  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2142  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2243  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2344  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2445  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2546  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2647  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2748  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2849  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2950  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 3051  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 3152  return _mm512_set1_pbh(h);53}54 55__m512bh test_mm512_set_pbh(__bf16 bf1, __bf16 bf2, __bf16 bf3, __bf16 bf4,56                          __bf16 bf5, __bf16 bf6, __bf16 bf7, __bf16 bf8,57                          __bf16 bf9, __bf16 bf10, __bf16 bf11, __bf16 bf12,58                          __bf16 bf13, __bf16 bf14, __bf16 bf15, __bf16 bf16,59                          __bf16 bf17, __bf16 bf18, __bf16 bf19, __bf16 bf20,60                          __bf16 bf21, __bf16 bf22, __bf16 bf23, __bf16 bf24,61                          __bf16 bf25, __bf16 bf26, __bf16 bf27, __bf16 bf28,62                          __bf16 bf29, __bf16 bf30, __bf16 bf31, __bf16 bf32) {63  // CHECK-LABEL: @test_mm512_set_pbh64  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 065  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 166  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 267  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 368  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 469  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 570  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 671  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 772  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 873  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 974  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1075  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1176  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1277  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1378  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1479  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1580  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1681  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1782  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1883  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1984  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2085  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2186  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2287  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2388  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2489  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2590  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2691  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2792  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2893  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2994  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 3095  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 3196  return _mm512_set_pbh(bf1, bf2, bf3, bf4, bf5, bf6, bf7, bf8,97                       bf9, bf10, bf11, bf12, bf13, bf14, bf15, bf16,98                       bf17, bf18, bf19, bf20, bf21, bf22, bf23, bf24,99                       bf25, bf26, bf27, bf28, bf29, bf30, bf31, bf32);100}101 102__m512bh test_mm512_setr_pbh(__bf16 bf1, __bf16 bf2, __bf16 bf3, __bf16 bf4,103                           __bf16 bf5, __bf16 bf6, __bf16 bf7, __bf16 bf8,104                           __bf16 bf9, __bf16 bf10, __bf16 bf11, __bf16 bf12,105                           __bf16 bf13, __bf16 bf14, __bf16 bf15, __bf16 bf16,106                           __bf16 bf17, __bf16 bf18, __bf16 bf19, __bf16 bf20,107                           __bf16 bf21, __bf16 bf22, __bf16 bf23, __bf16 bf24,108                           __bf16 bf25, __bf16 bf26, __bf16 bf27, __bf16 bf28,109                           __bf16 bf29, __bf16 bf30, __bf16 bf31, __bf16 bf32) {110  // CHECK-LABEL: @test_mm512_setr_pbh111  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 0112  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1113  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2114  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 3115  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 4116  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 5117  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 6118  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 7119  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 8120  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 9121  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 10122  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 11123  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 12124  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 13125  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 14126  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 15127  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 16128  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 17129  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 18130  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 19131  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 20132  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 21133  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 22134  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 23135  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 24136  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 25137  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 26138  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 27139  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 28140  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 29141  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 30142  // CHECK: insertelement <32 x bfloat> {{.*}}, i32 31143  return _mm512_setr_pbh(bf1, bf2, bf3, bf4, bf5, bf6, bf7, bf8,144                        bf9, bf10, bf11, bf12, bf13, bf14, bf15, bf16,145                        bf17, bf18, bf19, bf20, bf21, bf22, bf23, bf24,146                        bf25, bf26, bf27, bf28, bf29, bf30, bf31, bf32);147}148 149__m512 test_mm512_castbf16_ps(__m512bh A) {150  // CHECK-LABEL: test_mm512_castbf16_ps151  // CHECK: bitcast <32 x bfloat> %{{.*}} to <16 x float>152  return _mm512_castbf16_ps(A);153}154 155__m512d test_mm512_castbf16_pd(__m512bh A) {156  // CHECK-LABEL: test_mm512_castbf16_pd157  // CHECK: bitcast <32 x bfloat> %{{.*}} to <8 x double>158  return _mm512_castbf16_pd(A);159}160 161__m512i test_mm512_castbf16_si512(__m512bh A) {162  // CHECK-LABEL: test_mm512_castbf16_si512163  // CHECK: bitcast <32 x bfloat> %{{.*}} to <8 x i64>164  return _mm512_castbf16_si512(A);165}166 167__m512bh test_mm512_castps_pbh(__m512 A) {168  // CHECK-LABEL: test_mm512_castps_pbh169  // CHECK: bitcast <16 x float> %{{.*}} to <32 x bfloat>170  return _mm512_castps_pbh(A);171}172 173__m512bh test_mm512_castpd_pbh(__m512d A) {174  // CHECK-LABEL: test_mm512_castpd_pbh175  // CHECK: bitcast <8 x double> %{{.*}} to <32 x bfloat>176  return _mm512_castpd_pbh(A);177}178 179__m512bh test_mm512_castsi512_pbh(__m512i A) {180  // CHECK-LABEL: test_mm512_castsi512_pbh181  // CHECK: bitcast <8 x i64> %{{.*}} to <32 x bfloat>182  return _mm512_castsi512_pbh(A);183}184 185__m128bh test_mm512_castbf16512_pbh128(__m512bh __a) {186  // CHECK-LABEL: test_mm512_castbf16512_pbh128187  // CHECK: shufflevector <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>188  return _mm512_castbf16512_pbh128(__a);189}190 191__m256bh test_mm512_castbf16512_pbh256(__m512bh __a) {192  // CHECK-LABEL: test_mm512_castbf16512_pbh256193  // CHECK: shufflevector <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>194  return _mm512_castbf16512_pbh256(__a);195}196 197__m512bh test_mm512_castbf16128_pbh512(__m128bh __a) {198  // CHECK-LABEL: test_mm512_castbf16128_pbh512199  // CHECK: shufflevector <8 x bfloat> %{{.*}}, <8 x bfloat> %{{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>200  return _mm512_castbf16128_pbh512(__a);201}202 203__m512bh test_mm512_castbf16256_pbh512(__m256bh __a) {204  // CHECK-LABEL: test_mm512_castbf16256_pbh512205  // CHECK: shufflevector <16 x bfloat> %{{.*}}, <16 x bfloat> %{{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>206  return _mm512_castbf16256_pbh512(__a);207}208 209__m512bh test_mm512_zextbf16128_pbh512(__m128bh __a) {210  // CHECK-LABEL: test_mm512_zextbf16128_pbh512211  // CHECK: shufflevector <8 x bfloat> %{{.*}}, <8 x bfloat> {{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>212  return _mm512_zextbf16128_pbh512(__a);213}214 215__m512bh test_mm512_zextbf16256_pbh512(__m256bh __a) {216  // CHECK-LABEL: test_mm512_zextbf16256_pbh512217  // CHECK: shufflevector <16 x bfloat> %{{.*}}, <16 x bfloat> {{.*}}, <32 x i32>218  return _mm512_zextbf16256_pbh512(__a);219}220 221__m512bh test_mm512_abs_pbh(__m512bh a) {222  // CHECK-LABEL: @test_mm512_abs_pbh223  // CHECK: and <16 x i32>224  return _mm512_abs_pbh(a);225}226 227// VMOVSH228 229__m512bh test_mm512_load_pbh(void *p) {230  // CHECK-LABEL: @test_mm512_load_pbh231  // CHECK: load <32 x bfloat>, ptr %{{.*}}, align 64232  return _mm512_load_pbh(p);233}234 235__m512bh test_mm512_loadu_pbh(void *p) {236  // CHECK-LABEL: @test_mm512_loadu_pbh237  // CHECK: load <32 x bfloat>, ptr {{.*}}, align 1{{$}}238  return _mm512_loadu_pbh(p);239}240 241void test_mm512_store_pbh(void *p, __m512bh a) {242  // CHECK-LABEL: @test_mm512_store_pbh243  // CHECK: store <32 x bfloat> %{{.*}}, ptr %{{.*}}, align 64244  _mm512_store_pbh(p, a);245}246 247void test_mm512_storeu_pbh(void *p, __m512bh a) {248  // CHECK-LABEL: @test_mm512_storeu_pbh249  // CHECK: store <32 x bfloat> %{{.*}}, ptr %{{.*}}, align 1{{$}}250  // CHECK-NEXT: ret void251  _mm512_storeu_pbh(p, a);252}253 254__m512bh test_mm512_mask_blend_pbh(__mmask32 __U, __m512bh __A, __m512bh __W) {255  // CHECK-LABEL: @test_mm512_mask_blend_pbh256  // CHECK:  %{{.*}} = bitcast i32 %{{.*}} to <32 x i1>257  // CHECK:  %{{.*}} = select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}258  return _mm512_mask_blend_pbh(__U, __A, __W);259}260 261__m512bh test_mm512_permutex2var_pbh(__m512bh __A, __m512i __I, __m512bh __B) {262  // CHECK-LABEL: @test_mm512_permutex2var_pbh263  // CHECK:  %{{.*}} = bitcast <32 x bfloat> %{{.*}} to <32 x i16>264  // CHECK:  %{{.*}} = bitcast <8 x i64> %{{.*}} to <32 x i16>265  // CHECK:  %{{.*}} = bitcast <32 x bfloat> %{{.*}} to <32 x i16>266  // CHECK:  %{{.*}} = call <32 x i16> @llvm.x86.avx512.vpermi2var.hi.512(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})267  // CHECK:  %{{.*}} = bitcast <32 x i16> %{{.*}} to <32 x bfloat>268  return _mm512_permutex2var_pbh(__A, __I, __B);269}270 271__m512bh test_mm512_permutexvar_epi16(__m512i __A, __m512bh __B) {272  // CHECK-LABEL: @test_mm512_permutexvar_epi16273  // CHECK:  %{{.*}} = bitcast <32 x bfloat> %{{.*}} to <32 x i16>274  // CHECK:  %{{.*}} = bitcast <8 x i64> %{{.*}} to <32 x i16>275  // CHECK:  %{{.*}} = call <32 x i16> @llvm.x86.avx512.permvar.hi.512(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})276  // CHECK:  %{{.*}} = bitcast <32 x i16> %{{.*}} to <32 x bfloat>277  return _mm512_permutexvar_pbh(__A, __B);278}279 280__m512bh test_mm512_add_pbh(__m512bh __A, __m512bh __B) {281  // CHECK-LABEL: @test_mm512_add_pbh282  // CHECK: %{{.*}} = fadd <32 x bfloat> %{{.*}}, %{{.*}}283  return _mm512_add_pbh(__A, __B);284}285 286__m512bh test_mm512_mask_add_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) {287  // CHECK: %{{.*}} = fadd <32 x bfloat> %{{.*}}, %{{.*}}288  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}289  return _mm512_mask_add_pbh(__W, __U, __A, __B);290}291 292__m512bh test_mm512_maskz_add_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) {293  // CHECK: %{{.*}} = fadd <32 x bfloat> %{{.*}}, %{{.*}}294  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}295  return _mm512_maskz_add_pbh(__U, __A, __B);296}297 298__m512bh test_mm512_sub_pbh(__m512bh __A, __m512bh __B) {299  // CHECK-LABEL: @test_mm512_sub_pbh300  // CHECK: %{{.*}} = fsub <32 x bfloat> %{{.*}}, %{{.*}}301  return _mm512_sub_pbh(__A, __B);302}303 304__m512bh test_mm512_mask_sub_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) {305  // CHECK: %{{.*}} = fsub <32 x bfloat> %{{.*}}, %{{.*}}306  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}307  return _mm512_mask_sub_pbh(__W, __U, __A, __B);308}309 310__m512bh test_mm512_maskz_sub_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) {311  // CHECK: %{{.*}} = fsub <32 x bfloat> %{{.*}}, %{{.*}}312  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}313  return _mm512_maskz_sub_pbh(__U, __A, __B);314}315 316__m512bh test_mm512_mul_pbh(__m512bh __A, __m512bh __B) {317  // CHECK-LABEL: @test_mm512_mul_pbh318  // CHECK: %{{.*}} = fmul <32 x bfloat> %{{.*}}, %{{.*}}319  return _mm512_mul_pbh(__A, __B);320}321 322__m512bh test_mm512_mask_mul_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) {323  // CHECK: %{{.*}} = fmul <32 x bfloat> %{{.*}}, %{{.*}}324  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}325  return _mm512_mask_mul_pbh(__W, __U, __A, __B);326}327 328__m512bh test_mm512_maskz_mul_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) {329  // CHECK: %{{.*}} = fmul <32 x bfloat> %{{.*}}, %{{.*}}330  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}331  return _mm512_maskz_mul_pbh(__U, __A, __B);332}333 334__m512bh test_mm512_div_pbh(__m512bh __A, __m512bh __B) {335  // CHECK-LABEL: @test_mm512_div_pbh336  // CHECK: %{{.*}} = fdiv <32 x bfloat> %{{.*}}, %{{.*}}337  return _mm512_div_pbh(__A, __B);338}339 340__m512bh test_mm512_mask_div_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) {341  // CHECK: %{{.*}} = fdiv <32 x bfloat> %{{.*}}, %{{.*}}342  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}343  return _mm512_mask_div_pbh(__W, __U, __A, __B);344}345 346__m512bh test_mm512_maskz_div_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) {347  // CHECK: %{{.*}} = fdiv <32 x bfloat> %{{.*}}, %{{.*}}348  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}349  return _mm512_maskz_div_pbh(__U, __A, __B);350}351 352__m512bh test_mm512_max_pbh(__m512bh __A, __m512bh __B) {353  // CHECK-LABEL: @test_mm512_max_pbh354  // CHECK: @llvm.x86.avx10.vmaxbf16512(355  return _mm512_max_pbh(__A, __B);356}357 358__m512bh test_mm512_mask_max_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) {359  // CHECK: @llvm.x86.avx10.vmaxbf16512360  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}361  return _mm512_mask_max_pbh(__W, __U, __A, __B);362}363 364__m512bh test_mm512_maskz_max_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) {365  // CHECK: @llvm.x86.avx10.vmaxbf16512366  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}367  return _mm512_maskz_max_pbh(__U, __A, __B);368}369 370__m512bh test_mm512_min_pbh(__m512bh __A, __m512bh __B) {371  // CHECK-LABEL: @test_mm512_min_pbh372  // CHECK: @llvm.x86.avx10.vminbf16512(373  return _mm512_min_pbh(__A, __B);374}375 376__m512bh test_mm512_mask_min_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) {377  // CHECK: @llvm.x86.avx10.vminbf16512378  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}379  return _mm512_mask_min_pbh(__W, __U, __A, __B);380}381 382__m512bh test_mm512_maskz_min_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) {383  // CHECK: @llvm.x86.avx10.vminbf16512384  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}385  return _mm512_maskz_min_pbh(__U, __A, __B);386}387 388__mmask32 test_mm512_cmp_pbh_mask_eq_oq(__m512bh a, __m512bh b) {389  // CHECK-LABEL: @test_mm512_cmp_pbh_mask_eq_oq390  // CHECK: fcmp oeq <32 x bfloat> %{{.*}}, %{{.*}}391  return _mm512_cmp_pbh_mask(a, b, _CMP_EQ_OQ);392}393 394__mmask32 test_mm512_cmp_pbh_mask_lt_os(__m512bh a, __m512bh b) {395  // CHECK-LABEL: test_mm512_cmp_pbh_mask_lt_os396  // CHECK: fcmp olt <32 x bfloat> %{{.*}}, %{{.*}}397  return _mm512_cmp_pbh_mask(a, b, _CMP_LT_OS);398}399 400__mmask32 test_mm512_cmp_pbh_mask_le_os(__m512bh a, __m512bh b) {401  // CHECK-LABEL: test_mm512_cmp_pbh_mask_le_os402  // CHECK: fcmp ole <32 x bfloat> %{{.*}}, %{{.*}}403  return _mm512_cmp_pbh_mask(a, b, _CMP_LE_OS);404}405 406__mmask32 test_mm512_cmp_pbh_mask_unord_q(__m512bh a, __m512bh b) {407  // CHECK-LABEL: test_mm512_cmp_pbh_mask_unord_q408  // CHECK: fcmp uno <32 x bfloat> %{{.*}}, %{{.*}}409  return _mm512_cmp_pbh_mask(a, b, _CMP_UNORD_Q);410}411 412__mmask32 test_mm512_cmp_pbh_mask_neq_uq(__m512bh a, __m512bh b) {413  // CHECK-LABEL: test_mm512_cmp_pbh_mask_neq_uq414  // CHECK: fcmp une <32 x bfloat> %{{.*}}, %{{.*}}415  return _mm512_cmp_pbh_mask(a, b, _CMP_NEQ_UQ);416}417 418__mmask32 test_mm512_cmp_pbh_mask_nlt_us(__m512bh a, __m512bh b) {419  // CHECK-LABEL: test_mm512_cmp_pbh_mask_nlt_us420  // CHECK: fcmp uge <32 x bfloat> %{{.*}}, %{{.*}}421  return _mm512_cmp_pbh_mask(a, b, _CMP_NLT_US);422}423 424__mmask32 test_mm512_cmp_pbh_mask_nle_us(__m512bh a, __m512bh b) {425  // CHECK-LABEL: test_mm512_cmp_pbh_mask_nle_us426  // CHECK: fcmp ugt <32 x bfloat> %{{.*}}, %{{.*}}427  return _mm512_cmp_pbh_mask(a, b, _CMP_NLE_US);428}429 430__mmask32 test_mm512_cmp_pbh_mask_ord_q(__m512bh a, __m512bh b) {431  // CHECK-LABEL: test_mm512_cmp_pbh_mask_ord_q432  // CHECK: fcmp ord <32 x bfloat> %{{.*}}, %{{.*}}433  return _mm512_cmp_pbh_mask(a, b, _CMP_ORD_Q);434}435 436__mmask32 test_mm512_cmp_pbh_mask_eq_uq(__m512bh a, __m512bh b) {437  // CHECK-LABEL: test_mm512_cmp_pbh_mask_eq_uq438  // CHECK: fcmp ueq <32 x bfloat> %{{.*}}, %{{.*}}439  return _mm512_cmp_pbh_mask(a, b, _CMP_EQ_UQ);440}441 442__mmask32 test_mm512_cmp_pbh_mask_nge_us(__m512bh a, __m512bh b) {443  // CHECK-LABEL: test_mm512_cmp_pbh_mask_nge_us444  // CHECK: fcmp ult <32 x bfloat> %{{.*}}, %{{.*}}445  return _mm512_cmp_pbh_mask(a, b, _CMP_NGE_US);446}447 448__mmask32 test_mm512_cmp_pbh_mask_ngt_us(__m512bh a, __m512bh b) {449  // CHECK-LABEL: test_mm512_cmp_pbh_mask_ngt_us450  // CHECK: fcmp ule <32 x bfloat> %{{.*}}, %{{.*}}451  return _mm512_cmp_pbh_mask(a, b, _CMP_NGT_US);452}453 454__mmask32 test_mm512_cmp_pbh_mask_false_oq(__m512bh a, __m512bh b) {455  // CHECK-LABEL: test_mm512_cmp_pbh_mask_false_oq456  // CHECK: fcmp false <32 x bfloat> %{{.*}}, %{{.*}}457  return _mm512_cmp_pbh_mask(a, b, _CMP_FALSE_OQ);458}459 460__mmask32 test_mm512_cmp_pbh_mask_neq_oq(__m512bh a, __m512bh b) {461  // CHECK-LABEL: test_mm512_cmp_pbh_mask_neq_oq462  // CHECK: fcmp one <32 x bfloat> %{{.*}}, %{{.*}}463  return _mm512_cmp_pbh_mask(a, b, _CMP_NEQ_OQ);464}465 466__mmask32 test_mm512_cmp_pbh_mask_ge_os(__m512bh a, __m512bh b) {467  // CHECK-LABEL: test_mm512_cmp_pbh_mask_ge_os468  // CHECK: fcmp oge <32 x bfloat> %{{.*}}, %{{.*}}469  return _mm512_cmp_pbh_mask(a, b, _CMP_GE_OS);470}471 472__mmask32 test_mm512_cmp_pbh_mask_gt_os(__m512bh a, __m512bh b) {473  // CHECK-LABEL: test_mm512_cmp_pbh_mask_gt_os474  // CHECK: fcmp ogt <32 x bfloat> %{{.*}}, %{{.*}}475  return _mm512_cmp_pbh_mask(a, b, _CMP_GT_OS);476}477 478__mmask32 test_mm512_cmp_pbh_mask_true_uq(__m512bh a, __m512bh b) {479  // CHECK-LABEL: test_mm512_cmp_pbh_mask_true_uq480  // CHECK: fcmp true <32 x bfloat> %{{.*}}, %{{.*}}481  return _mm512_cmp_pbh_mask(a, b, _CMP_TRUE_UQ);482}483 484__mmask32 test_mm512_cmp_pbh_mask_eq_os(__m512bh a, __m512bh b) {485  // CHECK-LABEL: test_mm512_cmp_pbh_mask_eq_os486  // CHECK: fcmp oeq <32 x bfloat> %{{.*}}, %{{.*}}487  return _mm512_cmp_pbh_mask(a, b, _CMP_EQ_OS);488}489 490__mmask32 test_mm512_cmp_pbh_mask_lt_oq(__m512bh a, __m512bh b) {491  // CHECK-LABEL: test_mm512_cmp_pbh_mask_lt_oq492  // CHECK: fcmp olt <32 x bfloat> %{{.*}}, %{{.*}}493  return _mm512_cmp_pbh_mask(a, b, _CMP_LT_OQ);494}495 496__mmask32 test_mm512_cmp_pbh_mask_le_oq(__m512bh a, __m512bh b) {497  // CHECK-LABEL: test_mm512_cmp_pbh_mask_le_oq498  // CHECK: fcmp ole <32 x bfloat> %{{.*}}, %{{.*}}499  return _mm512_cmp_pbh_mask(a, b, _CMP_LE_OQ);500}501 502__mmask32 test_mm512_cmp_pbh_mask_unord_s(__m512bh a, __m512bh b) {503  // CHECK-LABEL: test_mm512_cmp_pbh_mask_unord_s504  // CHECK: fcmp uno <32 x bfloat> %{{.*}}, %{{.*}}505  return _mm512_cmp_pbh_mask(a, b, _CMP_UNORD_S);506}507 508__mmask32 test_mm512_cmp_pbh_mask_neq_us(__m512bh a, __m512bh b) {509  // CHECK-LABEL: test_mm512_cmp_pbh_mask_neq_us510  // CHECK: fcmp une <32 x bfloat> %{{.*}}, %{{.*}}511  return _mm512_cmp_pbh_mask(a, b, _CMP_NEQ_US);512}513 514__mmask32 test_mm512_cmp_pbh_mask_nlt_uq(__m512bh a, __m512bh b) {515  // CHECK-LABEL: test_mm512_cmp_pbh_mask_nlt_uq516  // CHECK: fcmp uge <32 x bfloat> %{{.*}}, %{{.*}}517  return _mm512_cmp_pbh_mask(a, b, _CMP_NLT_UQ);518}519 520__mmask32 test_mm512_cmp_pbh_mask_nle_uq(__m512bh a, __m512bh b) {521  // CHECK-LABEL: test_mm512_cmp_pbh_mask_nle_uq522  // CHECK: fcmp ugt <32 x bfloat> %{{.*}}, %{{.*}}523  return _mm512_cmp_pbh_mask(a, b, _CMP_NLE_UQ);524}525 526__mmask32 test_mm512_cmp_pbh_mask_ord_s(__m512bh a, __m512bh b) {527  // CHECK-LABEL: test_mm512_cmp_pbh_mask_ord_s528  // CHECK: fcmp ord <32 x bfloat> %{{.*}}, %{{.*}}529  return _mm512_cmp_pbh_mask(a, b, _CMP_ORD_S);530}531 532__mmask32 test_mm512_cmp_pbh_mask_eq_us(__m512bh a, __m512bh b) {533  // CHECK-LABEL: test_mm512_cmp_pbh_mask_eq_us534  // CHECK: fcmp ueq <32 x bfloat> %{{.*}}, %{{.*}}535  return _mm512_cmp_pbh_mask(a, b, _CMP_EQ_US);536}537 538__mmask32 test_mm512_cmp_pbh_mask_nge_uq(__m512bh a, __m512bh b) {539  // CHECK-LABEL: test_mm512_cmp_pbh_mask_nge_uq540  // CHECK: fcmp ult <32 x bfloat> %{{.*}}, %{{.*}}541  return _mm512_cmp_pbh_mask(a, b, _CMP_NGE_UQ);542}543 544__mmask32 test_mm512_cmp_pbh_mask_ngt_uq(__m512bh a, __m512bh b) {545  // CHECK-LABEL: test_mm512_cmp_pbh_mask_ngt_uq546  // CHECK: fcmp ule <32 x bfloat> %{{.*}}, %{{.*}}547  return _mm512_cmp_pbh_mask(a, b, _CMP_NGT_UQ);548}549 550__mmask32 test_mm512_cmp_pbh_mask_false_os(__m512bh a, __m512bh b) {551  // CHECK-LABEL: test_mm512_cmp_pbh_mask_false_os552  // CHECK: fcmp false <32 x bfloat> %{{.*}}, %{{.*}}553  return _mm512_cmp_pbh_mask(a, b, _CMP_FALSE_OS);554}555 556__mmask32 test_mm512_cmp_pbh_mask_neq_os(__m512bh a, __m512bh b) {557  // CHECK-LABEL: test_mm512_cmp_pbh_mask_neq_os558  // CHECK: fcmp one <32 x bfloat> %{{.*}}, %{{.*}}559  return _mm512_cmp_pbh_mask(a, b, _CMP_NEQ_OS);560}561 562__mmask32 test_mm512_cmp_pbh_mask_ge_oq(__m512bh a, __m512bh b) {563  // CHECK-LABEL: test_mm512_cmp_pbh_mask_ge_oq564  // CHECK: fcmp oge <32 x bfloat> %{{.*}}, %{{.*}}565  return _mm512_cmp_pbh_mask(a, b, _CMP_GE_OQ);566}567 568__mmask32 test_mm512_cmp_pbh_mask_gt_oq(__m512bh a, __m512bh b) {569  // CHECK-LABEL: test_mm512_cmp_pbh_mask_gt_oq570  // CHECK: fcmp ogt <32 x bfloat> %{{.*}}, %{{.*}}571  return _mm512_cmp_pbh_mask(a, b, _CMP_GT_OQ);572}573 574__mmask32 test_mm512_cmp_pbh_mask_true_us(__m512bh a, __m512bh b) {575  // CHECK-LABEL: test_mm512_cmp_pbh_mask_true_us576  // CHECK: fcmp true <32 x bfloat> %{{.*}}, %{{.*}}577  return _mm512_cmp_pbh_mask(a, b, _CMP_TRUE_US);578}579 580__mmask32 test_mm512_mask_cmp_pbh_mask_eq_oq(__mmask32 m, __m512bh a, __m512bh b) {581  // CHECK-LABEL: @test_mm512_mask_cmp_pbh_mask_eq_oq582  // CHECK: fcmp oeq <32 x bfloat> %{{.*}}, %{{.*}}583  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}584  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_EQ_OQ);585}586 587__mmask32 test_mm512_mask_cmp_pbh_mask_lt_os(__mmask32 m, __m512bh a, __m512bh b) {588  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_lt_os589  // CHECK: fcmp olt <32 x bfloat> %{{.*}}, %{{.*}}590  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}591  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_LT_OS);592}593 594__mmask32 test_mm512_mask_cmp_pbh_mask_le_os(__mmask32 m, __m512bh a, __m512bh b) {595  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_le_os596  // CHECK: fcmp ole <32 x bfloat> %{{.*}}, %{{.*}}597  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}598  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_LE_OS);599}600 601__mmask32 test_mm512_mask_cmp_pbh_mask_unord_q(__mmask32 m, __m512bh a, __m512bh b) {602  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_unord_q603  // CHECK: fcmp uno <32 x bfloat> %{{.*}}, %{{.*}}604  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_UNORD_Q);605}606 607__mmask32 test_mm512_mask_cmp_pbh_mask_neq_uq(__mmask32 m, __m512bh a, __m512bh b) {608  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_neq_uq609  // CHECK: fcmp une <32 x bfloat> %{{.*}}, %{{.*}}610  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}611  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NEQ_UQ);612}613 614__mmask32 test_mm512_mask_cmp_pbh_mask_nlt_us(__mmask32 m, __m512bh a, __m512bh b) {615  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nlt_us616  // CHECK: fcmp uge <32 x bfloat> %{{.*}}, %{{.*}}617  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}618  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NLT_US);619}620 621__mmask32 test_mm512_mask_cmp_pbh_mask_nle_us(__mmask32 m, __m512bh a, __m512bh b) {622  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nle_us623  // CHECK: fcmp ugt <32 x bfloat> %{{.*}}, %{{.*}}624  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}625  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NLE_US);626}627 628__mmask32 test_mm512_mask_cmp_pbh_mask_ord_q(__mmask32 m, __m512bh a, __m512bh b) {629  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ord_q630  // CHECK: fcmp ord <32 x bfloat> %{{.*}}, %{{.*}}631  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}632  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_ORD_Q);633}634 635__mmask32 test_mm512_mask_cmp_pbh_mask_eq_uq(__mmask32 m, __m512bh a, __m512bh b) {636  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_eq_uq637  // CHECK: fcmp ueq <32 x bfloat> %{{.*}}, %{{.*}}638  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}639  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_EQ_UQ);640}641 642__mmask32 test_mm512_mask_cmp_pbh_mask_nge_us(__mmask32 m, __m512bh a, __m512bh b) {643  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nge_us644  // CHECK: fcmp ult <32 x bfloat> %{{.*}}, %{{.*}}645  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}646  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NGE_US);647}648 649__mmask32 test_mm512_mask_cmp_pbh_mask_ngt_us(__mmask32 m, __m512bh a, __m512bh b) {650  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ngt_us651  // CHECK: fcmp ule <32 x bfloat> %{{.*}}, %{{.*}}652  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}653  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NGT_US);654}655 656__mmask32 test_mm512_mask_cmp_pbh_mask_false_oq(__mmask32 m, __m512bh a, __m512bh b) {657  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_false_oq658  // CHECK: fcmp false <32 x bfloat> %{{.*}}, %{{.*}}659  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}660  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_FALSE_OQ);661}662 663__mmask32 test_mm512_mask_cmp_pbh_mask_neq_oq(__mmask32 m, __m512bh a, __m512bh b) {664  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_neq_oq665  // CHECK: fcmp one <32 x bfloat> %{{.*}}, %{{.*}}666  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}667  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NEQ_OQ);668}669 670__mmask32 test_mm512_mask_cmp_pbh_mask_ge_os(__mmask32 m, __m512bh a, __m512bh b) {671  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ge_os672  // CHECK: fcmp oge <32 x bfloat> %{{.*}}, %{{.*}}673  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}674  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_GE_OS);675}676 677__mmask32 test_mm512_mask_cmp_pbh_mask_gt_os(__mmask32 m, __m512bh a, __m512bh b) {678  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_gt_os679  // CHECK: fcmp ogt <32 x bfloat> %{{.*}}, %{{.*}}680  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}681  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_GT_OS);682}683 684__mmask32 test_mm512_mask_cmp_pbh_mask_true_uq(__mmask32 m, __m512bh a, __m512bh b) {685  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_true_uq686  // CHECK: fcmp true <32 x bfloat> %{{.*}}, %{{.*}}687  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}688  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_TRUE_UQ);689}690 691__mmask32 test_mm512_mask_cmp_pbh_mask_eq_os(__mmask32 m, __m512bh a, __m512bh b) {692  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_eq_os693  // CHECK: fcmp oeq <32 x bfloat> %{{.*}}, %{{.*}}694  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}695  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_EQ_OS);696}697 698__mmask32 test_mm512_mask_cmp_pbh_mask_lt_oq(__mmask32 m, __m512bh a, __m512bh b) {699  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_lt_oq700  // CHECK: fcmp olt <32 x bfloat> %{{.*}}, %{{.*}}701  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}702  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_LT_OQ);703}704 705__mmask32 test_mm512_mask_cmp_pbh_mask_le_oq(__mmask32 m, __m512bh a, __m512bh b) {706  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_le_oq707  // CHECK: fcmp ole <32 x bfloat> %{{.*}}, %{{.*}}708  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}709  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_LE_OQ);710}711 712__mmask32 test_mm512_mask_cmp_pbh_mask_unord_s(__mmask32 m, __m512bh a, __m512bh b) {713  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_unord_s714  // CHECK: fcmp uno <32 x bfloat> %{{.*}}, %{{.*}}715  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}716  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_UNORD_S);717}718 719__mmask32 test_mm512_mask_cmp_pbh_mask_neq_us(__mmask32 m, __m512bh a, __m512bh b) {720  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_neq_us721  // CHECK: fcmp une <32 x bfloat> %{{.*}}, %{{.*}}722  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}723  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NEQ_US);724}725 726__mmask32 test_mm512_mask_cmp_pbh_mask_nlt_uq(__mmask32 m, __m512bh a, __m512bh b) {727  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nlt_uq728  // CHECK: fcmp uge <32 x bfloat> %{{.*}}, %{{.*}}729  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}730  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NLT_UQ);731}732 733__mmask32 test_mm512_mask_cmp_pbh_mask_nle_uq(__mmask32 m, __m512bh a, __m512bh b) {734  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nle_uq735  // CHECK: fcmp ugt <32 x bfloat> %{{.*}}, %{{.*}}736  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}737  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NLE_UQ);738}739 740__mmask32 test_mm512_mask_cmp_pbh_mask_ord_s(__mmask32 m, __m512bh a, __m512bh b) {741  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ord_s742  // CHECK: fcmp ord <32 x bfloat> %{{.*}}, %{{.*}}743  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}744  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_ORD_S);745}746 747__mmask32 test_mm512_mask_cmp_pbh_mask_eq_us(__mmask32 m, __m512bh a, __m512bh b) {748  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_eq_us749  // CHECK: fcmp ueq <32 x bfloat> %{{.*}}, %{{.*}}750  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}751  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_EQ_US);752}753 754__mmask32 test_mm512_mask_cmp_pbh_mask_nge_uq(__mmask32 m, __m512bh a, __m512bh b) {755  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nge_uq756  // CHECK: fcmp ult <32 x bfloat> %{{.*}}, %{{.*}}757  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}758  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NGE_UQ);759}760 761__mmask32 test_mm512_mask_cmp_pbh_mask_ngt_uq(__mmask32 m, __m512bh a, __m512bh b) {762  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ngt_uq763  // CHECK: fcmp ule <32 x bfloat> %{{.*}}, %{{.*}}764  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}765  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NGT_UQ);766}767 768__mmask32 test_mm512_mask_cmp_pbh_mask_false_os(__mmask32 m, __m512bh a, __m512bh b) {769  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_false_os770  // CHECK: fcmp false <32 x bfloat> %{{.*}}, %{{.*}}771  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}772  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_FALSE_OS);773}774 775__mmask32 test_mm512_mask_cmp_pbh_mask_neq_os(__mmask32 m, __m512bh a, __m512bh b) {776  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_neq_os777  // CHECK: fcmp one <32 x bfloat> %{{.*}}, %{{.*}}778  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}779  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_NEQ_OS);780}781 782__mmask32 test_mm512_mask_cmp_pbh_mask_ge_oq(__mmask32 m, __m512bh a, __m512bh b) {783  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ge_oq784  // CHECK: fcmp oge <32 x bfloat> %{{.*}}, %{{.*}}785  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}786  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_GE_OQ);787}788 789__mmask32 test_mm512_mask_cmp_pbh_mask_gt_oq(__mmask32 m, __m512bh a, __m512bh b) {790  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_gt_oq791  // CHECK: fcmp ogt <32 x bfloat> %{{.*}}, %{{.*}}792  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}793  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_GT_OQ);794}795 796__mmask32 test_mm512_mask_cmp_pbh_mask_true_us(__mmask32 m, __m512bh a, __m512bh b) {797  // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_true_us798  // CHECK: fcmp true <32 x bfloat> %{{.*}}, %{{.*}}799  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}800  return _mm512_mask_cmp_pbh_mask(m, a, b, _CMP_TRUE_US);801}802 803__mmask32 test_mm512_mask_fpclass_pbh_mask(__mmask32 __U, __m512bh __A) {804  // CHECK-LABEL: @test_mm512_mask_fpclass_pbh_mask805  // CHECK: @llvm.x86.avx10.fpclass.bf16.512806  return _mm512_mask_fpclass_pbh_mask(__U, __A, 4);807}808 809__mmask32 test_mm512_fpclass_pbh_mask(__m512bh __A) {810  // CHECK-LABEL: @test_mm512_fpclass_pbh_mask811  // CHECK: @llvm.x86.avx10.fpclass.bf16.512812  return _mm512_fpclass_pbh_mask(__A, 4);813}814 815__m512bh test_mm512_scalef_pbh(__m512bh __A, __m512bh __B) {816  // CHECK-LABEL: @test_mm512_scalef_pbh817  // CHECK: @llvm.x86.avx10.mask.scalef.bf16.512818  return _mm512_scalef_pbh(__A, __B);819}820 821__m512bh test_mm512_mask_scalef_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) {822  // CHECK-LABEL: @test_mm512_mask_scalef_pbh823  // CHECK: @llvm.x86.avx10.mask.scalef.bf16.512824  return _mm512_mask_scalef_pbh(__W, __U, __A, __B);825}826 827__m512bh test_mm512_maskz_scalef_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) {828  // CHECK-LABEL: @test_mm512_maskz_scalef_pbh829  // CHECK: @llvm.x86.avx10.mask.scalef.bf16.512830  return _mm512_maskz_scalef_pbh(__U, __A, __B);831}832 833__m512bh test_mm512_rcp_pbh(__m512bh __A) {834  // CHECK-LABEL: @test_mm512_rcp_pbh835  // CHECK: @llvm.x86.avx10.mask.rcp.bf16.512836  return _mm512_rcp_pbh(__A);837}838 839__m512bh test_mm512_mask_rcp_pbh(__m512bh __W, __mmask32 __U, __m512bh __A) {840  // CHECK-LABEL: @test_mm512_mask_rcp_pbh841  // CHECK: @llvm.x86.avx10.mask.rcp.bf16.512842  return (__m512bh)_mm512_mask_rcp_pbh(__W, __U, __A);843}844 845__m512bh test_mm512_maskz_rcp_pbh(__mmask32 __U, __m512bh __A) {846  // CHECK-LABEL: @test_mm512_maskz_rcp_pbh847  // CHECK: @llvm.x86.avx10.mask.rcp.bf16.512848  return _mm512_maskz_rcp_pbh(__U, __A);849}850 851__m512bh test_mm512_getexp_pbh(__m512bh __A) {852  // CHECK-LABEL: @test_mm512_getexp_pbh853  // CHECK: @llvm.x86.avx10.mask.getexp.bf16.512854  return _mm512_getexp_pbh(__A);855}856 857__m512bh test_mm512_mask_getexp_pbh(__m512bh __W, __mmask32 __U, __m512bh __A) {858  // CHECK-LABEL: @test_mm512_mask_getexp_pbh859  // CHECK: @llvm.x86.avx10.mask.getexp.bf16.512860  return _mm512_mask_getexp_pbh(__W, __U, __A);861}862 863__m512bh test_mm512_maskz_getexp_pbh(__mmask32 __U, __m512bh __A) {864  // CHECK-LABEL: @test_mm512_maskz_getexp_pbh865  // CHECK: @llvm.x86.avx10.mask.getexp.bf16.512866  return _mm512_maskz_getexp_pbh(__U, __A);867}868 869__m512bh test_mm512_rsqrt_pbh(__m512bh __A) {870  // CHECK-LABEL: @test_mm512_rsqrt_pbh871  // CHECK: @llvm.x86.avx10.mask.rsqrt.bf16.512872  return _mm512_rsqrt_pbh(__A);873}874 875__m512bh test_mm512_mask_rsqrt_pbh(__m512bh __W, __mmask32 __U, __m512bh __A) {876  // CHECK-LABEL: @test_mm512_mask_rsqrt_pbh877  // CHECK: @llvm.x86.avx10.mask.rsqrt.bf16.512878  return (__m512bh)_mm512_mask_rsqrt_pbh(__W, __U, __A);879}880 881__m512bh test_mm512_maskz_rsqrt_pbh(__mmask32 __U, __m512bh __A) {882  // CHECK-LABEL: @test_mm512_maskz_rsqrt_pbh883  // CHECK: @llvm.x86.avx10.mask.rsqrt.bf16.512884  return _mm512_maskz_rsqrt_pbh(__U, __A);885}886 887__m512bh test_mm512_reduce_pbh(__m512bh __A) {888  // CHECK-LABEL: @test_mm512_reduce_pbh889  // CHECK: @llvm.x86.avx10.mask.reduce.bf16.512890  return _mm512_reduce_pbh(__A, 3);891}892 893__m512bh test_mm512_mask_reduce_pbh(__m512bh __W, __mmask16 __U, __m512bh __A) {894  // CHECK-LABEL: @test_mm512_mask_reduce_pbh895  // CHECK: @llvm.x86.avx10.mask.reduce.bf16.512896  return _mm512_mask_reduce_pbh(__W, __U, __A, 1);897}898 899__m512bh test_mm512_maskz_reduce_pbh(__mmask16 __U, __m512bh __A) {900  // CHECK-LABEL: @test_mm512_maskz_reduce_pbh901  // CHECK: @llvm.x86.avx10.mask.reduce.bf16.512902  return _mm512_maskz_reduce_pbh(__U, __A, 1);903}904 905__m512bh test_mm512_roundscale_pbh(__m512bh __A) {906  // CHECK-LABEL: @test_mm512_roundscale_pbh907  // CHECK: @llvm.x86.avx10.mask.rndscale.bf16.512908  return _mm512_roundscale_pbh(__A, 3);909}910 911__m512bh test_mm512_mask_roundscale_pbh(__m512bh __W, __mmask16 __U, __m512bh __A) {912  // CHECK-LABEL: @test_mm512_mask_roundscale_pbh913  // CHECK: @llvm.x86.avx10.mask.rndscale.bf16.512914  return _mm512_mask_roundscale_pbh(__W, __U, __A, 1);915}916 917__m512bh test_mm512_maskz_roundscale_pbh(__mmask16 __U, __m512bh __A) {918  // CHECK-LABEL: @test_mm512_maskz_roundscale_pbh919  // CHECK: @llvm.x86.avx10.mask.rndscale.bf16.512920  return _mm512_maskz_roundscale_pbh(__U, __A, 1 );921}922 923__m512bh test_mm512_getmant_pbh(__m512bh __A) {924  // CHECK-LABEL: @test_mm512_getmant_pbh925  // CHECK: @llvm.x86.avx10.mask.getmant.bf16.512926  return _mm512_getmant_pbh(__A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);927}928 929__m512bh test_mm512_mask_getmant_pbh(__m512bh __W, __mmask32 __U, __m512bh __A) {930  // CHECK-LABEL: @test_mm512_mask_getmant_pbh931  // CHECK: @llvm.x86.avx10.mask.getmant.bf16.512932  return _mm512_mask_getmant_pbh(__W, __U, __A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);933}934 935__m512bh test_mm512_maskz_getmant_pbh(__mmask32 __U, __m512bh __A) {936  // CHECK-LABEL: @test_mm512_maskz_getmant_pbh937  // CHECK: @llvm.x86.avx10.mask.getmant.bf16.512938  return _mm512_maskz_getmant_pbh(__U, __A, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);939}940 941__m512bh test_mm512_sqrt_pbh(__m512bh __A) {942  // CHECK-LABEL: @test_mm512_sqrt_pbh943  // CHECK: %{{.*}} = call <32 x bfloat> @llvm.sqrt.v32bf16(<32 x bfloat> %{{.*}})944  return _mm512_sqrt_pbh(__A);945}946 947__m512bh test_mm512_mask_sqrt_pbh(__m512bh __W, __mmask32 __U, __m512bh __A) {948  // CHECK-LABEL: @test_mm512_mask_sqrt_pbh949  // CHECK: %{{.*}} = call <32 x bfloat> @llvm.sqrt.v32bf16(<32 x bfloat> %{{.*}})950  // CHECK: bitcast i32 %{{.*}} to <32 x i1>951  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}952  return (__m512bh)_mm512_mask_sqrt_pbh(__W, __U, __A);953}954 955__m512bh test_mm512_maskz_sqrt_pbh(__mmask32 __U, __m512bh __A) {956  // CHECK-LABEL: @test_mm512_maskz_sqrt_pbh957  // CHECK: %{{.*}} = call <32 x bfloat> @llvm.sqrt.v32bf16(<32 x bfloat> %{{.*}})958  // CHECK: bitcast i32 %{{.*}} to <32 x i1>959  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}960  return _mm512_maskz_sqrt_pbh(__U, __A);961}962 963__m512bh test_mm512_fmadd_pbh(__m512bh __A, __m512bh __B, __m512bh __C) {964  // CHECK-LABEL: @test_mm512_fmadd_pbh965  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})966  return _mm512_fmadd_pbh(__A, __B, __C);967}968 969__m512bh test_mm512_mask_fmadd_pbh(__m512bh __A, __mmask32 __U, __m512bh __B, __m512bh __C) {970  // CHECK-LABEL: @test_mm512_mask_fmadd_pbh971  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})972  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}973  return _mm512_mask_fmadd_pbh(__A, __U, __B, __C);974}975 976__m512bh test_mm512_mask3_fmadd_pbh(__m512bh __A, __m512bh __B, __m512bh __C, __mmask32 __U) {977  // CHECK-LABEL: @test_mm512_mask3_fmadd_pbh978  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})979  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}980  return _mm512_mask3_fmadd_pbh(__A, __B, __C, __U);981}982 983__m512bh test_mm512_maskz_fmadd_pbh(__mmask32 __U, __m512bh __A, __m512bh __B, __m512bh __C) {984  // CHECK-LABEL: @test_mm512_maskz_fmadd_pbh985  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})986  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}987  return _mm512_maskz_fmadd_pbh(__U, __A, __B, __C);988}989 990__m512bh test_mm512_fmsub_pbh(__m512bh __A, __m512bh __B, __m512bh __C) {991  // CHECK-LABEL: @test_mm512_fmsub_pbh992  // CHECK: fneg993  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})994  return _mm512_fmsub_pbh(__A, __B, __C);995}996 997__m512bh test_mm512_mask_fmsub_pbh(__m512bh __A, __mmask32 __U, __m512bh __B, __m512bh __C) {998  // CHECK-LABEL: @test_mm512_mask_fmsub_pbh999  // CHECK: fneg1000  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})1001  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}1002  return _mm512_mask_fmsub_pbh(__A, __U, __B, __C);1003}1004 1005__m512bh test_mm512_mask3_fmsub_pbh(__m512bh __A, __m512bh __B, __m512bh __C, __mmask32 __U) {1006  // CHECK-LABEL: @test_mm512_mask3_fmsub_pbh1007  // CHECK: fneg1008  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})1009  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}1010  return _mm512_mask3_fmsub_pbh(__A, __B, __C, __U);1011}1012 1013__m512bh test_mm512_maskz_fmsub_pbh(__mmask32 __U, __m512bh __A, __m512bh __B, __m512bh __C) {1014  // CHECK-LABEL: @test_mm512_maskz_fmsub_pbh1015  // CHECK: fneg1016  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})1017  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}1018  return _mm512_maskz_fmsub_pbh(__U, __A, __B, __C);1019}1020 1021__m512bh test_mm512_fnmadd_pbh(__m512bh __A, __m512bh __B, __m512bh __C) {1022  // CHECK-LABEL: @test_mm512_fnmadd_pbh1023  // CHECK: fneg1024  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})1025  return _mm512_fnmadd_pbh(__A, __B, __C);1026}1027 1028__m512bh test_mm512_mask_fnmadd_pbh(__m512bh __A, __mmask32 __U, __m512bh __B, __m512bh __C) {1029  // CHECK-LABEL: @test_mm512_mask_fnmadd_pbh1030  // CHECK: fneg1031  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})1032  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}1033  return _mm512_mask_fnmadd_pbh(__A, __U, __B, __C);1034}1035 1036__m512bh test_mm512_mask3_fnmadd_pbh(__m512bh __A, __m512bh __B, __m512bh __C, __mmask32 __U) {1037  // CHECK-LABEL: @test_mm512_mask3_fnmadd_pbh1038  // CHECK: fneg1039  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})1040  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}1041  return _mm512_mask3_fnmadd_pbh(__A, __B, __C, __U);1042}1043 1044__m512bh test_mm512_maskz_fnmadd_pbh(__mmask32 __U, __m512bh __A, __m512bh __B, __m512bh __C) {1045  // CHECK-LABEL: @test_mm512_maskz_fnmadd_pbh1046  // CHECK: fneg1047  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})1048  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}1049  return _mm512_maskz_fnmadd_pbh(__U, __A, __B, __C);1050}1051 1052__m512bh test_mm512_fnmsub_pbh(__m512bh __A, __m512bh __B, __m512bh __C) {1053  // CHECK-LABEL: @test_mm512_fnmsub_pbh1054  // CHECK: fneg1055  // CHECK: fneg1056  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})1057  return _mm512_fnmsub_pbh(__A, __B, __C);1058}1059 1060__m512bh test_mm512_mask_fnmsub_pbh(__m512bh __A, __mmask32 __U, __m512bh __B, __m512bh __C) {1061  // CHECK-LABEL: @test_mm512_mask_fnmsub_pbh1062  // CHECK: fneg1063  // CHECK: fneg1064  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})1065  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}1066  return _mm512_mask_fnmsub_pbh(__A, __U, __B, __C);1067}1068 1069__m512bh test_mm512_mask3_fnmsub_pbh(__m512bh __A, __m512bh __B, __m512bh __C, __mmask32 __U) {1070  // CHECK-LABEL: @test_mm512_mask3_fnmsub_pbh1071  // CHECK: fneg1072  // CHECK: fneg1073  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})1074  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}1075  return _mm512_mask3_fnmsub_pbh(__A, __B, __C, __U);1076}1077 1078__m512bh test_mm512_maskz_fnmsub_pbh(__mmask32 __U, __m512bh __A, __m512bh __B, __m512bh __C) {1079  // CHECK-LABEL: @test_mm512_maskz_fnmsub_pbh1080  // CHECK: fneg1081  // CHECK: fneg1082  // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})1083  // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}1084  return _mm512_maskz_fnmsub_pbh(__U, __A, __B, __C);1085}1086