brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.6 KiB · 97faaf1 Raw
265 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__m128bh test_mm_minmax_pbh(__m128bh __A, __m128bh __B) {9  // CHECK-LABEL: @test_mm_minmax_pbh(10  // CHECK: call <8 x bfloat> @llvm.x86.avx10.vminmaxbf16128(11  return _mm_minmax_pbh(__A, __B, 127);12}13 14__m128bh test_mm_mask_minmax_pbh(__m128bh __A, __mmask8 __B, __m128bh __C, __m128bh __D) {15  // CHECK-LABEL: @test_mm_mask_minmax_pbh(16  // CHECK: call <8 x bfloat> @llvm.x86.avx10.vminmaxbf16128(17  // CHECK: select <8 x i1> %{{.*}}, <8 x bfloat> %{{.*}}, <8 x bfloat> %{{.*}}18  return _mm_mask_minmax_pbh(__A, __B, __C, __D, 127);19}20 21__m128bh test_mm_maskz_minmax_pbh(__mmask8 __A, __m128bh __B, __m128bh __C) {22  // CHECK-LABEL: @test_mm_maskz_minmax_pbh(23  // CHECK: call <8 x bfloat> @llvm.x86.avx10.vminmaxbf16128(24  // CHECK: zeroinitializer25  // CHECK: select <8 x i1> %{{.*}}, <8 x bfloat> %{{.*}}, <8 x bfloat> %{{.*}}26  return _mm_maskz_minmax_pbh(__A, __B, __C, 127);27}28 29__m256bh test_mm256_minmax_pbh(__m256bh __A, __m256bh __B) {30  // CHECK-LABEL: @test_mm256_minmax_pbh(31  // CHECK: call <16 x bfloat> @llvm.x86.avx10.vminmaxbf16256(32  return _mm256_minmax_pbh(__A, __B, 127);33}34 35__m256bh test_mm256_mask_minmax_pbh(__m256bh __A, __mmask16 __B, __m256bh __C, __m256bh __D) {36  // CHECK-LABEL: @test_mm256_mask_minmax_pbh(37  // CHECK: call <16 x bfloat> @llvm.x86.avx10.vminmaxbf16256(38  // CHECK: select <16 x i1> %{{.*}}, <16 x bfloat> %{{.*}}, <16 x bfloat> %{{.*}}39  return _mm256_mask_minmax_pbh(__A, __B, __C, __D, 127);40}41 42__m256bh test_mm256_maskz_minmax_pbh(__mmask16 __A, __m256bh __B, __m256bh __C) {43  // CHECK-LABEL: @test_mm256_maskz_minmax_pbh(44  // CHECK: call <16 x bfloat> @llvm.x86.avx10.vminmaxbf16256(45  // CHECK: zeroinitializer46  // CHECK: select <16 x i1> %{{.*}}, <16 x bfloat> %{{.*}}, <16 x bfloat> %{{.*}}47  return _mm256_maskz_minmax_pbh(__A, __B, __C, 127);48}49 50__m128d test_mm_minmax_pd(__m128d __A, __m128d __B) {51  // CHECK-LABEL: @test_mm_minmax_pd(52  // CHECK: call <2 x double> @llvm.x86.avx10.mask.vminmaxpd128(53  return _mm_minmax_pd(__A, __B, 127);54}55 56__m128d test_mm_mask_minmax_pd(__m128d __A, __mmask8 __B, __m128d __C, __m128d __D) {57  // CHECK-LABEL: @test_mm_mask_minmax_pd(58  // CHECK: call <2 x double> @llvm.x86.avx10.mask.vminmaxpd128(59  return _mm_mask_minmax_pd(__A, __B, __C, __D, 127);60}61 62__m128d test_mm_maskz_minmax_pd(__mmask8 __A, __m128d __B, __m128d __C) {63  // CHECK-LABEL: @test_mm_maskz_minmax_pd(64  // CHECK: call <2 x double> @llvm.x86.avx10.mask.vminmaxpd128(65  return _mm_maskz_minmax_pd(__A, __B, __C, 127);66}67 68__m256d test_mm256_minmax_pd(__m256d __A, __m256d __B) {69  // CHECK-LABEL: @test_mm256_minmax_pd(70  // CHECK: call <4 x double> @llvm.x86.avx10.mask.vminmaxpd256(71  return _mm256_minmax_pd(__A, __B, 127);72}73 74__m256d test_mm256_mask_minmax_pd(__m256d __A, __mmask8 __B, __m256d __C, __m256d __D) {75  // CHECK-LABEL: @test_mm256_mask_minmax_pd(76  // CHECK: call <4 x double> @llvm.x86.avx10.mask.vminmaxpd256(77  return _mm256_mask_minmax_pd(__A, __B, __C, __D, 127);78}79 80__m256d test_mm256_maskz_minmax_pd(__mmask8 __A, __m256d __B, __m256d __C) {81  // CHECK-LABEL: @test_mm256_maskz_minmax_pd(82  // CHECK: call <4 x double> @llvm.x86.avx10.mask.vminmaxpd256(83  return _mm256_maskz_minmax_pd(__A, __B, __C, 127);84}85 86__m128h test_mm_minmax_ph(__m128h __A, __m128h __B) {87  // CHECK-LABEL: @test_mm_minmax_ph(88  // CHECK: call <8 x half> @llvm.x86.avx10.mask.vminmaxph128(89  return _mm_minmax_ph(__A, __B, 127);90}91 92__m128h test_mm_mask_minmax_ph(__m128h __A, __mmask8 __B, __m128h __C, __m128h __D) {93  // CHECK-LABEL: @test_mm_mask_minmax_ph(94  // CHECK: call <8 x half> @llvm.x86.avx10.mask.vminmaxph128(95  return _mm_mask_minmax_ph(__A, __B, __C, __D, 127);96}97 98__m128h test_mm_maskz_minmax_ph(__mmask8 __A, __m128h __B, __m128h __C) {99  // CHECK-LABEL: @test_mm_maskz_minmax_ph(100  // CHECK: call <8 x half> @llvm.x86.avx10.mask.vminmaxph128(101  return _mm_maskz_minmax_ph(__A, __B, __C, 127);102}103 104__m256h test_mm256_minmax_ph(__m256h __A, __m256h __B) {105  // CHECK-LABEL: @test_mm256_minmax_ph(106  // CHECK: call <16 x half> @llvm.x86.avx10.mask.vminmaxph256(107  return _mm256_minmax_ph(__A, __B, 127);108}109 110__m256h test_mm256_mask_minmax_ph(__m256h __A, __mmask16 __B, __m256h __C, __m256h __D) {111  // CHECK-LABEL: @test_mm256_mask_minmax_ph(112  // CHECK: call <16 x half> @llvm.x86.avx10.mask.vminmaxph256(113  return _mm256_mask_minmax_ph(__A, __B, __C, __D, 127);114}115 116__m256h test_mm256_maskz_minmax_ph(__mmask16 __A, __m256h __B, __m256h __C) {117  // CHECK-LABEL: @test_mm256_maskz_minmax_ph(118  // CHECK: call <16 x half> @llvm.x86.avx10.mask.vminmaxph256(119  return _mm256_maskz_minmax_ph(__A, __B, __C, 127);120}121 122__m128 test_mm_minmax_ps(__m128 __A, __m128 __B) {123  // CHECK-LABEL: @test_mm_minmax_ps(124  // CHECK: call <4 x float> @llvm.x86.avx10.mask.vminmaxps128(125  return _mm_minmax_ps(__A, __B, 127);126}127 128__m128 test_mm_mask_minmax_ps(__m128 __A, __mmask8 __B, __m128 __C, __m128 __D) {129  // CHECK-LABEL: @test_mm_mask_minmax_ps(130  // CHECK: call <4 x float> @llvm.x86.avx10.mask.vminmaxps128(131  return _mm_mask_minmax_ps(__A, __B, __C, __D, 127);132}133 134__m128 test_mm_maskz_minmax_ps(__mmask8 __A, __m128 __B, __m128 __C) {135  // CHECK-LABEL: @test_mm_maskz_minmax_ps(136  // CHECK: call <4 x float> @llvm.x86.avx10.mask.vminmaxps128(137  return _mm_maskz_minmax_ps(__A, __B, __C, 127);138}139 140__m256 test_mm256_minmax_ps(__m256 __A, __m256 __B) {141  // CHECK-LABEL: @test_mm256_minmax_ps(142  // CHECK: call <8 x float> @llvm.x86.avx10.mask.vminmaxps256(143  return _mm256_minmax_ps(__A, __B, 127);144}145 146__m256 test_mm256_mask_minmax_ps(__m256 __A, __mmask8 __B, __m256 __C, __m256 __D) {147  // CHECK-LABEL: @test_mm256_mask_minmax_ps(148  // CHECK: call <8 x float> @llvm.x86.avx10.mask.vminmaxps256(149  return _mm256_mask_minmax_ps(__A, __B, __C, __D, 127);150}151 152__m256 test_mm256_maskz_minmax_ps(__mmask8 __A, __m256 __B, __m256 __C) {153  // CHECK-LABEL: @test_mm256_maskz_minmax_ps(154  // CHECK: call <8 x float> @llvm.x86.avx10.mask.vminmaxps256(155  return _mm256_maskz_minmax_ps(__A, __B, __C, 127);156}157 158__m128d test_mm_minmax_sd(__m128d __A, __m128d __B) {159  // CHECK-LABEL: @test_mm_minmax_sd(160  // CHECK: call <2 x double> @llvm.x86.avx10.mask.vminmaxsd.round(161  return _mm_minmax_sd(__A, __B, 127);162}163 164__m128d test_mm_mask_minmax_sd(__m128d __A, __mmask8 __B, __m128d __C, __m128d __D) {165  // CHECK-LABEL: @test_mm_mask_minmax_sd(166  // CHECK: call <2 x double> @llvm.x86.avx10.mask.vminmaxsd.round(167  return _mm_mask_minmax_sd(__A, __B, __C, __D, 127);168}169 170__m128d test_mm_maskz_minmax_sd(__mmask8 __A, __m128d __B, __m128d __C) {171  // CHECK-LABEL: @test_mm_maskz_minmax_sd(172  // CHECK: call <2 x double> @llvm.x86.avx10.mask.vminmaxsd.round(173  return _mm_maskz_minmax_sd(__A, __B, __C, 127);174}175 176__m128d test_mm_minmax_round_sd(__m128d __A, __m128d __B) {177  // CHECK-LABEL: @test_mm_minmax_round_sd(178  // CHECK: call <2 x double> @llvm.x86.avx10.mask.vminmaxsd.round(179  return _mm_minmax_round_sd(__A, __B, 127, _MM_FROUND_NO_EXC);180}181 182__m128d test_mm_mask_minmax_round_sd(__m128d __A, __mmask8 __B, __m128d __C, __m128d __D) {183  // CHECK-LABEL: @test_mm_mask_minmax_round_sd(184  // CHECK: call <2 x double> @llvm.x86.avx10.mask.vminmaxsd.round(185  return _mm_mask_minmax_round_sd(__A, __B, __C, __D, 127, _MM_FROUND_NO_EXC);186}187 188__m128d test_mm_maskz_minmax_round_sd(__mmask8 __A, __m128d __B, __m128d __C) {189  // CHECK-LABEL: @test_mm_maskz_minmax_round_sd(190  // CHECK: call <2 x double> @llvm.x86.avx10.mask.vminmaxsd.round(191  return _mm_maskz_minmax_round_sd(__A, __B, __C, 127, _MM_FROUND_NO_EXC);192}193 194__m128h test_mm_minmax_sh(__m128h __A, __m128h __B) {195  // CHECK-LABEL: @test_mm_minmax_sh(196  // CHECK: call <8 x half> @llvm.x86.avx10.mask.vminmaxsh.round(197  return _mm_minmax_sh(__A, __B, 127);198}199 200__m128h test_mm_mask_minmax_sh(__m128h __A, __mmask8 __B, __m128h __C, __m128h __D) {201  // CHECK-LABEL: @test_mm_mask_minmax_sh(202  // CHECK: call <8 x half> @llvm.x86.avx10.mask.vminmaxsh.round(203  return _mm_mask_minmax_sh(__A, __B, __C, __D, 127);204}205 206__m128h test_mm_maskz_minmax_sh(__mmask8 __A, __m128h __B, __m128h __C) {207  // CHECK-LABEL: @test_mm_maskz_minmax_sh(208  // CHECK: call <8 x half> @llvm.x86.avx10.mask.vminmaxsh.round(209  return _mm_maskz_minmax_sh(__A, __B, __C, 127);210}211 212__m128h test_mm_minmax_round_sh(__m128h __A, __m128h __B) {213  // CHECK-LABEL: @test_mm_minmax_round_sh(214  // CHECK: call <8 x half> @llvm.x86.avx10.mask.vminmaxsh.round(215  return _mm_minmax_round_sh(__A, __B, 127, _MM_FROUND_NO_EXC);216}217 218__m128h test_mm_mask_minmax_round_sh(__m128h __A, __mmask8 __B, __m128h __C, __m128h __D) {219  // CHECK-LABEL: @test_mm_mask_minmax_round_sh(220  // CHECK: call <8 x half> @llvm.x86.avx10.mask.vminmaxsh.round(221  return _mm_mask_minmax_round_sh(__A, __B, __C, __D, 127, _MM_FROUND_NO_EXC);222}223 224__m128h test_mm_maskz_minmax_round_sh(__mmask8 __A, __m128h __B, __m128h __C) {225  // CHECK-LABEL: @test_mm_maskz_minmax_round_sh(226  // CHECK: call <8 x half> @llvm.x86.avx10.mask.vminmaxsh.round(227  return _mm_maskz_minmax_round_sh(__A, __B, __C, 127, _MM_FROUND_NO_EXC);228}229 230__m128 test_mm_minmax_ss(__m128 __A, __m128 __B) {231  // CHECK-LABEL: @test_mm_minmax_ss(232  // CHECK: call <4 x float> @llvm.x86.avx10.mask.vminmaxss.round(233  return _mm_minmax_ss(__A, __B, 127);234}235 236__m128 test_mm_mask_minmax_ss(__m128 __A, __mmask8 __B, __m128 __C, __m128 __D) {237  // CHECK-LABEL: @test_mm_mask_minmax_ss(238  // CHECK: call <4 x float> @llvm.x86.avx10.mask.vminmaxss.round(239  return _mm_mask_minmax_ss(__A, __B, __C, __D, 127);240}241 242__m128 test_mm_maskz_minmax_ss(__mmask8 __A, __m128 __B, __m128 __C) {243  // CHECK-LABEL: @test_mm_maskz_minmax_ss(244  // CHECK: call <4 x float> @llvm.x86.avx10.mask.vminmaxss.round(245  return _mm_maskz_minmax_ss(__A, __B, __C, 127);246}247 248__m128 test_mm_minmax_round_ss(__m128 __A, __m128 __B) {249  // CHECK-LABEL: @test_mm_minmax_round_ss(250  // CHECK: call <4 x float> @llvm.x86.avx10.mask.vminmaxss.round(251  return _mm_minmax_round_ss(__A, __B, 127, _MM_FROUND_NO_EXC);252}253 254__m128 test_mm_mask_minmax_round_ss(__m128 __A, __mmask8 __B, __m128 __C, __m128 __D) {255  // CHECK-LABEL: @test_mm_mask_minmax_round_ss(256  // CHECK: call <4 x float> @llvm.x86.avx10.mask.vminmaxss.round(257  return _mm_mask_minmax_round_ss(__A, __B, __C, __D, 127, _MM_FROUND_NO_EXC);258}259 260__m128 test_mm_maskz_minmax_round_ss(__mmask8 __A, __m128 __B, __m128 __C) {261  // CHECK-LABEL: @test_mm_maskz_minmax_round_ss(262  // CHECK: call <4 x float> @llvm.x86.avx10.mask.vminmaxss.round(263  return _mm_maskz_minmax_round_ss(__A, __B, __C, 127, _MM_FROUND_NO_EXC);264}265