brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.6 KiB · 7fbdcdc Raw
319 lines · c
1// RUN: %clang_cc1 %s -flax-vector-conversions=none -ffreestanding -triple=x86_64 -target-feature +avx10.2 \2// RUN: -emit-llvm -o - -Wno-invalid-feature-combination -Wall -Werror | FileCheck %s3// RUN: %clang_cc1 %s -flax-vector-conversions=none -ffreestanding -triple=i386 -target-feature +avx10.2 \4// RUN: -emit-llvm -o - -Wno-invalid-feature-combination -Wall -Werror | FileCheck %s5 6#include <immintrin.h>7 8__m512h test_mm512_cvtx2ps_ph(__m512 __A, __m512 __B) {9  // CHECK-LABEL: @test_mm512_cvtx2ps_ph(10  // CHECK: call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.51211  return _mm512_cvtx2ps_ph(__A, __B);12}13 14__m512h test_mm512_mask_cvtx2ps_ph(__m512h __W, __mmask32 __U, __m512 __A, __m512 __B) {15  // CHECK-LABEL: @test_mm512_mask_cvtx2ps_ph(16  // CHECK: call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.51217  return _mm512_mask_cvtx2ps_ph(__W, __U, __A, __B);18}19 20__m512h test_mm512_maskz_cvtx2ps_ph(__mmask32 __U, __m512 __A, __m512 __B) {21  // CHECK-LABEL: @test_mm512_maskz_cvtx2ps_ph(22  // CHECK: call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.51223  return _mm512_maskz_cvtx2ps_ph(__U, __A, __B);24}25 26__m512h test_mm512_cvtx_round2ps_ph(__m512 __A, __m512 __B) {27  // CHECK-LABEL: @test_mm512_cvtx_round2ps_ph(28  // CHECK: call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.51229  return _mm512_cvtx_round2ps_ph(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);30}31 32__m512h test_mm512_mask_cvtx_round2ps_ph(__m512h __W, __mmask32 __U, __m512 __A, __m512 __B) {33// CHECK-LABEL: @test_mm512_mask_cvtx_round2ps_ph(34// CHECK: call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.51235  return _mm512_mask_cvtx_round2ps_ph(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);36}37 38__m512h test_mm512_maskz_cvtx_round2ps_ph(__mmask32 __U, __m512 __A, __m512 __B) {39// CHECK-LABEL: @test_mm512_maskz_cvtx_round2ps_ph(40// CHECK: call <32 x half> @llvm.x86.avx10.mask.vcvt2ps2phx.51241  return _mm512_maskz_cvtx_round2ps_ph(__U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);42}43 44__m256i test_mm512_cvtbiasph_bf8(__m512i __A, __m512h __B) {45  // CHECK-LABEL: @test_mm512_cvtbiasph_bf8(46  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8512(47  return _mm512_cvtbiasph_bf8(__A, __B);48}49 50__m256i test_mm512_mask_cvtbiasph_bf8(__m256i __W, __mmask32 __U, __m512i __A, __m512h __B) {51  // CHECK-LABEL: @test_mm512_mask_cvtbiasph_bf8(52  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8512(53  return _mm512_mask_cvtbiasph_bf8(__W, __U, __A, __B);54}55 56__m256i test_mm512_maskz_cvtbiasph_bf8(__mmask32 __U, __m512i __A, __m512h __B) {57  // CHECK-LABEL: @test_mm512_maskz_cvtbiasph_bf8(58  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8512(59  return _mm512_maskz_cvtbiasph_bf8(__U, __A, __B);60}61 62__m256i test_mm512_cvts_biasph_bf8(__m512i __A, __m512h __B) {63  // CHECK-LABEL: @test_mm512_cvts_biasph_bf8(64  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s512(65  return _mm512_cvts_biasph_bf8(__A, __B);66}67 68__m256i test_mm512_mask_cvts_biasph_bf8(__m256i __W, __mmask32 __U, __m512i __A, __m512h __B) {69  // CHECK-LABEL: @test_mm512_mask_cvts_biasph_bf8(70  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s512(71  return _mm512_mask_cvts_biasph_bf8(__W, __U, __A, __B);72}73 74__m256i test_mm512_maskz_cvts_biasph_bf8(__mmask32 __U, __m512i __A, __m512h __B) {75  // CHECK-LABEL: @test_mm512_maskz_cvts_biasph_bf8(76  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2bf8s512(77  return _mm512_maskz_cvts_biasph_bf8(__U, __A, __B);78}79 80__m256i test_mm512_cvtbiasph_hf8(__m512i __A, __m512h __B) {81  // CHECK-LABEL: @test_mm512_cvtbiasph_hf8(82  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8512(83  return _mm512_cvtbiasph_hf8(__A, __B);84}85 86__m256i test_mm512_mask_cvtbiasph_hf8(__m256i __W, __mmask32 __U, __m512i __A, __m512h __B) {87  // CHECK-LABEL: @test_mm512_mask_cvtbiasph_hf8(88  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8512(89  return _mm512_mask_cvtbiasph_hf8(__W, __U, __A, __B);90}91 92__m256i test_mm512_maskz_cvtbiasph_hf8(__mmask32 __U, __m512i __A, __m512h __B) {93  // CHECK-LABEL: @test_mm512_maskz_cvtbiasph_hf8(94  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8512(95  return _mm512_maskz_cvtbiasph_hf8(__U, __A, __B);96}97 98__m256i test_mm512_cvts_biasph_hf8(__m512i __A, __m512h __B) {99  // CHECK-LABEL: @test_mm512_cvts_biasph_hf8(100  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s512(101  return _mm512_cvts_biasph_hf8(__A, __B);102}103 104__m256i test_mm512_mask_cvts_biasph_hf8(__m256i __W, __mmask32 __U, __m512i __A, __m512h __B) {105  // CHECK-LABEL: @test_mm512_mask_cvts_biasph_hf8(106  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s512(107  return _mm512_mask_cvts_biasph_hf8(__W, __U, __A, __B);108}109 110__m256i test_mm512_maskz_cvts_biasph_hf8(__mmask32 __U, __m512i __A, __m512h __B) {111  // CHECK-LABEL: @test_mm512_maskz_cvts_biasph_hf8(112  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtbiasph2hf8s512(113  return _mm512_maskz_cvts_biasph_hf8(__U, __A, __B);114}115 116__m512i test_mm512_cvt2ph_bf8(__m512h __A, __m512h __B) {117  // CHECK-LABEL: @test_mm512_cvt2ph_bf8(118  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8512(119  return _mm512_cvt2ph_bf8(__A, __B);120}121 122__m512i test_mm512_mask_cvt2ph_bf8(__m512i __W, __mmask32 __U, __m512h __A, __m512h __B) {123  // CHECK-LABEL: @test_mm512_mask_cvt2ph_bf8(124  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8512(125  // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}126  // CHECK: ret <8 x i64> %{{.*}}127  return _mm512_mask_cvt2ph_bf8(__W, __U, __A, __B);128}129 130__m512i test_mm512_maskz_cvt2ph_bf8(__mmask32 __U, __m512h __A, __m512h __B) {131  // CHECK-LABEL: @test_mm512_maskz_cvt2ph_bf8(132  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8512(133  // CHECK: zeroinitializer134  // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}135  return _mm512_maskz_cvt2ph_bf8(__U, __A, __B);136}137 138__m512i test_mm512_cvts_2ph_bf8(__m512h __A, __m512h __B) {139  // CHECK-LABEL: @test_mm512_cvts_2ph_bf8(140  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8s512(141  return _mm512_cvts_2ph_bf8(__A, __B);142}143 144__m512i test_mm512_mask_cvts_2ph_bf8(__m512i __W, __mmask64 __U, __m512h __A, __m512h __B) {145  // CHECK-LABEL: @test_mm512_mask_cvts_2ph_bf8(146  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8s512(147  // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}148  // CHECK: ret <8 x i64> %{{.*}}149  return _mm512_mask_cvts_2ph_bf8(__W, __U, __A, __B);150}151 152__m512i test_mm512_maskz_cvts_2ph_bf8(__mmask64 __U, __m512h __A, __m512h __B) {153  // CHECK-LABEL: @test_mm512_maskz_cvts_2ph_bf8(154  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2bf8s512(155  // CHECK: zeroinitializer156  // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}157  return _mm512_maskz_cvts_2ph_bf8(__U, __A, __B);158}159 160__m512i test_mm512_cvt2ph_hf8(__m512h __A, __m512h __B) {161  // CHECK-LABEL: @test_mm512_cvt2ph_hf8(162  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8512(163  return _mm512_cvt2ph_hf8(__A, __B);164}165 166__m512i test_mm512_mask_cvt2ph_hf8(__m512i __W, __mmask64 __U, __m512h __A, __m512h __B) {167  // CHECK-LABEL: @test_mm512_mask_cvt2ph_hf8(168  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8512(169  // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}170  // CHECK: ret <8 x i64> %{{.*}}171  return _mm512_mask_cvt2ph_hf8(__W, __U, __A, __B);172}173 174__m512i test_mm512_maskz_cvt2ph_hf8(__mmask64 __U, __m512h __A, __m512h __B) {175  // CHECK-LABEL: @test_mm512_maskz_cvt2ph_hf8(176  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8512(177  // CHECK: zeroinitializer178  // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}179  return _mm512_maskz_cvt2ph_hf8(__U, __A, __B);180}181 182__m512i test_mm512_cvts_2ph_hf8(__m512h __A, __m512h __B) {183  // CHECK-LABEL: @test_mm512_cvts_2ph_hf8(184  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8s512(185  return _mm512_cvts_2ph_hf8(__A, __B);186}187 188__m512i test_mm512_mask_cvts_2ph_hf8(__m512i __W, __mmask64 __U, __m512h __A, __m512h __B) {189  // CHECK-LABEL: @test_mm512_mask_cvts_2ph_hf8(190  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8s512(191  // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}192  // CHECK: ret <8 x i64> %{{.*}}193  return _mm512_mask_cvts_2ph_hf8(__W, __U, __A, __B);194}195 196__m512i test_mm512_maskz_cvts_2ph_hf8(__mmask64 __U, __m512h __A, __m512h __B) {197  // CHECK-LABEL: @test_mm512_maskz_cvts_2ph_hf8(198  // CHECK: call <64 x i8> @llvm.x86.avx10.vcvt2ph2hf8s512(199  // CHECK: zeroinitializer200  // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}201  return _mm512_maskz_cvts_2ph_hf8(__U, __A, __B);202}203 204__m512h test_mm512_cvthf8_ph(__m256i __A) {205  // CHECK-LABEL: @test_mm512_cvthf8_ph(206  // CHECK: call <32 x half> @llvm.x86.avx10.mask.vcvthf82ph512(207  return _mm512_cvthf8_ph(__A);208}209 210__m512h test_mm512_mask_cvthf8_ph(__m512h __A, __mmask32 __B, __m256i __C) {211  // CHECK-LABEL: @test_mm512_mask_cvthf8_ph(212  // CHECK: call <32 x half> @llvm.x86.avx10.mask.vcvthf82ph512(213  return _mm512_mask_cvthf8_ph(__A, __B, __C);214}215 216__m512h test_mm512_maskz_cvthf8_ph(__mmask32 __A, __m256i __B) {217  // CHECK-LABEL: @test_mm512_maskz_cvthf8_ph(218  // CHECK: call <32 x half> @llvm.x86.avx10.mask.vcvthf82ph512(219  return _mm512_maskz_cvthf8_ph(__A, __B);220}221 222__m256i test_mm512_cvtph_bf8(__m512h __A) {223  // CHECK-LABEL: @test_mm512_cvtph_bf8(224  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8512(225  return _mm512_cvtph_bf8(__A);226}227 228__m256i test_mm512_mask_cvtph_bf8(__m256i __A, __mmask32 __B, __m512h __C) {229  // CHECK-LABEL: @test_mm512_mask_cvtph_bf8(230  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8512(231  return _mm512_mask_cvtph_bf8(__A, __B, __C);232}233 234__m256i test_mm512_maskz_cvtph_bf8(__mmask32 __A, __m512h __B) {235  // CHECK-LABEL: @test_mm512_maskz_cvtph_bf8(236  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8512(237  return _mm512_maskz_cvtph_bf8(__A, __B);238}239 240__m256i test_mm512_cvts_ph_bf8(__m512h __A) {241  // CHECK-LABEL: @test_mm512_cvts_ph_bf8(242  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s512(243  return _mm512_cvts_ph_bf8(__A);244}245 246__m256i test_mm512_mask_cvts_ph_bf8(__m256i __A, __mmask32 __B, __m512h __C) {247  // CHECK-LABEL: @test_mm512_mask_cvts_ph_bf8(248  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s512(249  return _mm512_mask_cvts_ph_bf8(__A, __B, __C);250}251 252__m256i test_mm512_maskz_cvts_ph_bf8(__mmask32 __A, __m512h __B) {253  // CHECK-LABEL: @test_mm512_maskz_cvts_ph_bf8(254  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2bf8s512(255  return _mm512_maskz_cvts_ph_bf8(__A, __B);256}257 258__m256i test_mm512_cvtph_hf8(__m512h __A) {259  // CHECK-LABEL: @test_mm512_cvtph_hf8(260  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8512(261  return _mm512_cvtph_hf8(__A);262}263 264__m256i test_mm512_mask_cvtph_hf8(__m256i __A, __mmask32 __B, __m512h __C) {265  // CHECK-LABEL: @test_mm512_mask_cvtph_hf8(266  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8512(267  return _mm512_mask_cvtph_hf8(__A, __B, __C);268}269 270__m256i test_mm512_maskz_cvtph_hf8(__mmask32 __A, __m512h __B) {271  // CHECK-LABEL: @test_mm512_maskz_cvtph_hf8(272  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8512(273  return _mm512_maskz_cvtph_hf8(__A, __B);274}275 276__m256i test_mm512_cvts_ph_hf8(__m512h __A) {277  // CHECK-LABEL: @test_mm512_cvts_ph_hf8(278  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s512(279  return _mm512_cvts_ph_hf8(__A);280}281 282__m256i test_mm512_mask_cvts_ph_hf8(__m256i __A, __mmask32 __B, __m512h __C) {283  // CHECK-LABEL: @test_mm512_mask_cvts_ph_hf8(284  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s512(285  return _mm512_mask_cvts_ph_hf8(__A, __B, __C);286}287 288__m256i test_mm512_maskz_cvts_ph_hf8(__mmask32 __A, __m512h __B) {289  // CHECK-LABEL: @test_mm512_maskz_cvts_ph_hf8(290  // CHECK: call <32 x i8> @llvm.x86.avx10.mask.vcvtph2hf8s512(291  return _mm512_maskz_cvts_ph_hf8(__A, __B);292}293 294__m512h test_mm512_cvtbf8_ph(__m256i A) {295  // CHECK-LABEL: @test_mm512_cvtbf8_ph296  // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>297  // CHECK: @llvm.x86.avx512.pslli.w.512298  // CHECK: ret <32 x half> %{{.*}}299  return _mm512_cvtbf8_ph(A);300}301 302__m512h test_mm512_mask_cvtbf8_ph(__m512h S, __mmask32 M, __m256i A) {303  // CHECK-LABEL: @test_mm512_mask_cvtbf8_ph304  // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>305  // CHECK: @llvm.x86.avx512.pslli.w.512306  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}307  // CHECK: ret <32 x half> %{{.*}}308  return _mm512_mask_cvtbf8_ph(S, M, A);309}310 311__m512h test_mm512_maskz_cvtbf8_ph(__mmask32 M, __m256i A) {312  // CHECK-LABEL: @test_mm512_maskz_cvtbf8_ph313  // CHECK: sext <32 x i8> %{{.*}} to <32 x i16>314  // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}315  // CHECK: @llvm.x86.avx512.pslli.w.512316  // CHECK: ret <32 x half> %{{.*}}317  return _mm512_maskz_cvtbf8_ph(M, A);318}319