302 lines · c
1// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64 -target-feature +avx10.2 -emit-llvm -o - | FileCheck %s2// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i686 -target-feature +avx10.2 -emit-llvm -o - | FileCheck %s3 4#include <immintrin.h>5 6// VNNI FP167__m512 test_mm512_dpph_ps(__m512 __W, __m512h __A, __m512h __B) {8// CHECK-LABEL: @test_mm512_dpph_ps(9// CHECK: call <16 x float> @llvm.x86.avx10.vdpphps.51210 return _mm512_dpph_ps(__W, __A, __B);11}12 13__m512 test_mm512_mask_dpph_ps(__m512 __W, __mmask16 __U, __m512h __A, __m512h __B) {14// CHECK-LABEL: @test_mm512_mask_dpph_ps(15// CHECK: call <16 x float> @llvm.x86.avx10.vdpphps.51216// CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}17 return _mm512_mask_dpph_ps(__W, __U, __A, __B);18}19 20__m512 test_mm512_maskz_dpph_ps(__mmask16 __U, __m512 __W, __m512h __A, __m512h __B) {21// CHECK-LABEL: @test_mm512_maskz_dpph_ps(22// CHECK: call <16 x float> @llvm.x86.avx10.vdpphps.51223// CHECK: zeroinitializer24// CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}25 return _mm512_maskz_dpph_ps(__U, __W, __A, __B);26}27 28// VMPSADBW29__m512i test_mm512_mpsadbw_epu8(__m512i __A, __m512i __B) {30// CHECK-LABEL: @test_mm512_mpsadbw_epu831// CHECK: @llvm.x86.avx10.vmpsadbw.51232 return _mm512_mpsadbw_epu8(__A, __B, 17);33}34 35__m512i test_mm512_mask_mpsadbw_epu8(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {36// CHECK-LABEL: @test_mm512_mask_mpsadbw_epu837// CHECK: @llvm.x86.avx10.vmpsadbw.51238// CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}39 return _mm512_mask_mpsadbw_epu8(__W, __U, __A, __B, 17);40}41 42__m512i test_mm512_maskz_mpsadbw_epu8(__mmask32 __U, __m512i __A, __m512i __B) {43// CHECK-LABEL: @test_mm512_maskz_mpsadbw_epu844// CHECK: @llvm.x86.avx10.vmpsadbw.51245// CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}46 return _mm512_maskz_mpsadbw_epu8(__U, __A, __B, 17);47}48 49// VNNI INT850__m512i test_mm512_dpbssd_epi32(__m512i __W, __m512i __A, __m512i __B) {51// CHECK-LABEL: @test_mm512_dpbssd_epi32(52// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssd.51253 return _mm512_dpbssd_epi32(__W, __A, __B);54}55 56__m512i test_mm512_mask_dpbssd_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {57// CHECK-LABEL: @test_mm512_mask_dpbssd_epi32(58// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssd.51259// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}60 return _mm512_mask_dpbssd_epi32(__W, __U, __A, __B);61}62 63__m512i test_mm512_maskz_dpbssd_epi32(__mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {64// CHECK-LABEL: @test_mm512_maskz_dpbssd_epi32(65// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssd.51266// CHECK: zeroinitializer67// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}68 return _mm512_maskz_dpbssd_epi32(__U, __W, __A, __B);69}70 71__m512i test_mm512_dpbssds_epi32(__m512i __W, __m512i __A, __m512i __B) {72// CHECK-LABEL: @test_mm512_dpbssds_epi32(73// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssds.51274 return _mm512_dpbssds_epi32(__W, __A, __B);75}76 77__m512i test_mm512_mask_dpbssds_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {78// CHECK-LABEL: @test_mm512_mask_dpbssds_epi32(79// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssds.51280// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}81 return _mm512_mask_dpbssds_epi32(__W, __U, __A, __B);82}83 84__m512i test_mm512_maskz_dpbssds_epi32(__mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {85// CHECK-LABEL: @test_mm512_maskz_dpbssds_epi32(86// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssds.51287// CHECK: zeroinitializer88// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}89 return _mm512_maskz_dpbssds_epi32(__U, __W, __A, __B);90}91 92__m512i test_mm512_dpbsud_epi32(__m512i __W, __m512i __A, __m512i __B) {93// CHECK-LABEL: @test_mm512_dpbsud_epi32(94// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsud.51295 return _mm512_dpbsud_epi32(__W, __A, __B);96}97 98__m512i test_mm512_mask_dpbsud_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {99// CHECK-LABEL: @test_mm512_mask_dpbsud_epi32(100// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsud.512101// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}102 return _mm512_mask_dpbsud_epi32(__W, __U, __A, __B);103}104 105__m512i test_mm512_maskz_dpbsud_epi32(__mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {106// CHECK-LABEL: @test_mm512_maskz_dpbsud_epi32(107// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsud.512108// CHECK: zeroinitializer109// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}110 return _mm512_maskz_dpbsud_epi32(__U, __W, __A, __B);111}112 113__m512i test_mm512_dpbsuds_epi32(__m512i __W, __m512i __A, __m512i __B) {114// CHECK-LABEL: @test_mm512_dpbsuds_epi32(115// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsuds.512116 return _mm512_dpbsuds_epi32(__W, __A, __B);117}118 119__m512i test_mm512_mask_dpbsuds_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {120// CHECK-LABEL: @test_mm512_mask_dpbsuds_epi32(121// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsuds.512122// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}123 return _mm512_mask_dpbsuds_epi32(__W, __U, __A, __B);124}125 126__m512i test_mm512_maskz_dpbsuds_epi32(__mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {127// CHECK-LABEL: @test_mm512_maskz_dpbsuds_epi32(128// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsuds.512129// CHECK: zeroinitializer130// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}131 return _mm512_maskz_dpbsuds_epi32(__U, __W, __A, __B);132}133 134__m512i test_mm512_dpbuud_epi32(__m512i __W, __m512i __A, __m512i __B) {135// CHECK-LABEL: @test_mm512_dpbuud_epi32(136// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuud.512137 return _mm512_dpbuud_epi32(__W, __A, __B);138}139 140__m512i test_mm512_mask_dpbuud_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {141// CHECK-LABEL: @test_mm512_mask_dpbuud_epi32(142// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuud.512143// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}144 return _mm512_mask_dpbuud_epi32(__W, __U, __A, __B);145}146 147__m512i test_mm512_maskz_dpbuud_epi32(__mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {148// CHECK-LABEL: @test_mm512_maskz_dpbuud_epi32(149// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuud.512150// CHECK: zeroinitializer151// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}152 return _mm512_maskz_dpbuud_epi32(__U, __W, __A, __B);153}154 155__m512i test_mm512_dpbuuds_epi32(__m512i __W, __m512i __A, __m512i __B) {156// CHECK-LABEL: @test_mm512_dpbuuds_epi32(157// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuuds.512158 return _mm512_dpbuuds_epi32(__W, __A, __B);159}160 161__m512i test_mm512_mask_dpbuuds_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {162// CHECK-LABEL: @test_mm512_mask_dpbuuds_epi32(163// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuuds.512164// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}165 return _mm512_mask_dpbuuds_epi32(__W, __U, __A, __B);166}167 168__m512i test_mm512_maskz_dpbuuds_epi32(__mmask16 __U, __m512i __W, __m512i __A, __m512i __B) {169// CHECK-LABEL: @test_mm512_maskz_dpbuuds_epi32(170// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuuds.512171// CHECK: zeroinitializer172// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}173 return _mm512_maskz_dpbuuds_epi32(__U, __W, __A, __B);174}175 176/* VNNI INT16 */177__m512i test_mm512_dpwsud_epi32(__m512i __A, __m512i __B, __m512i __C) {178// CHECK-LABEL: @test_mm512_dpwsud_epi32(179// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})180 return _mm512_dpwsud_epi32(__A, __B, __C);181}182 183__m512i test_mm512_mask_dpwsud_epi32(__m512i __A, __mmask16 __B, __m512i __C, __m512i __D) {184// CHECK-LABEL: @test_mm512_mask_dpwsud_epi32(185// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})186// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}187 return _mm512_mask_dpwsud_epi32(__A, __B, __C, __D);188}189 190__m512i test_mm512_maskz_dpwsud_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {191// CHECK-LABEL: @test_mm512_maskz_dpwsud_epi32(192// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})193// CHECK: zeroinitializer194// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}195 return _mm512_maskz_dpwsud_epi32(__U, __A, __B, __C);196}197 198__m512i test_mm512_dpwsuds_epi32(__m512i __A, __m512i __B, __m512i __C) {199// CHECK-LABEL: @test_mm512_dpwsuds_epi32(200// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})201 return _mm512_dpwsuds_epi32(__A, __B, __C);202}203 204__m512i test_mm512_mask_dpwsuds_epi32(__m512i __A, __mmask16 __B, __m512i __C, __m512i __D) {205// CHECK-LABEL: @test_mm512_mask_dpwsuds_epi32(206// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})207// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}208 return _mm512_mask_dpwsuds_epi32(__A, __B, __C, __D);209}210 211__m512i test_mm512_maskz_dpwsuds_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {212// CHECK-LABEL: @test_mm512_maskz_dpwsuds_epi32(213// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})214// CHECK: zeroinitializer215// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}216 return _mm512_maskz_dpwsuds_epi32(__U, __A, __B, __C);217}218 219__m512i test_mm512_dpwusd_epi32(__m512i __A, __m512i __B, __m512i __C) {220// CHECK-LABEL: @test_mm512_dpwusd_epi32(221// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusd.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})222 return _mm512_dpwusd_epi32(__A, __B, __C);223}224 225__m512i test_mm512_mask_dpwusd_epi32(__m512i __A, __mmask16 __B, __m512i __C, __m512i __D) {226// CHECK-LABEL: @test_mm512_mask_dpwusd_epi32(227// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusd.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})228// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}229 return _mm512_mask_dpwusd_epi32(__A, __B, __C, __D);230}231 232__m512i test_mm512_maskz_dpwusd_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {233// CHECK-LABEL: @test_mm512_maskz_dpwusd_epi32(234// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusd.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})235// CHECK: zeroinitializer236// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}237 return _mm512_maskz_dpwusd_epi32(__U, __A, __B, __C);238}239 240__m512i test_mm512_dpwusds_epi32(__m512i __A, __m512i __B, __m512i __C) {241// CHECK-LABEL: @test_mm512_dpwusds_epi32(242// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})243 return _mm512_dpwusds_epi32(__A, __B, __C);244}245 246__m512i test_mm512_mask_dpwusds_epi32(__m512i __A, __mmask16 __B, __m512i __C, __m512i __D) {247// CHECK-LABEL: @test_mm512_mask_dpwusds_epi32(248// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})249// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}250 return _mm512_mask_dpwusds_epi32(__A, __B, __C, __D);251}252 253__m512i test_mm512_maskz_dpwusds_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {254// CHECK-LABEL: @test_mm512_maskz_dpwusds_epi32(255// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})256// CHECK: zeroinitializer257// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}258 return _mm512_maskz_dpwusds_epi32(__U, __A, __B, __C);259}260 261__m512i test_mm512_dpwuud_epi32(__m512i __A, __m512i __B, __m512i __C) {262// CHECK-LABEL: @test_mm512_dpwuud_epi32(263// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})264 return _mm512_dpwuud_epi32(__A, __B, __C);265}266 267__m512i test_mm512_mask_dpwuud_epi32(__m512i __A, __mmask16 __B, __m512i __C, __m512i __D) {268// CHECK-LABEL: @test_mm512_mask_dpwuud_epi32(269// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})270// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}271 return _mm512_mask_dpwuud_epi32(__A, __B, __C, __D);272}273 274__m512i test_mm512_maskz_dpwuud_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {275// CHECK-LABEL: @test_mm512_maskz_dpwuud_epi32(276// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})277// CHECK: zeroinitializer278// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}279 return _mm512_maskz_dpwuud_epi32(__U, __A, __B, __C);280}281 282__m512i test_mm512_dpwuuds_epi32(__m512i __A, __m512i __B, __m512i __C) {283// CHECK-LABEL: @test_mm512_dpwuuds_epi32(284// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})285 return _mm512_dpwuuds_epi32(__A, __B, __C);286}287 288__m512i test_mm512_mask_dpwuuds_epi32(__m512i __A, __mmask16 __B, __m512i __C, __m512i __D) {289// CHECK-LABEL: @test_mm512_mask_dpwuuds_epi32(290// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})291// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}292 return _mm512_mask_dpwuuds_epi32(__A, __B, __C, __D);293}294 295__m512i test_mm512_maskz_dpwuuds_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {296// CHECK-LABEL: @test_mm512_maskz_dpwuuds_epi32(297// CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})298// CHECK: zeroinitializer299// CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}300 return _mm512_maskz_dpwuuds_epi32(__U, __A, __B, __C);301}302