[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / clang / test / CodeGen / X86 / avx512ifmavl-builtins.c
blob3b744787f2abc9b200819a8fd94fc3eda0fd51b3
1 // RUN: %clang_cc1 %s -flax-vector-conversions=none -ffreestanding -triple=x86_64-apple-darwin -target-feature +avx512ifma -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
3 #include <immintrin.h>
5 __m128i test_mm_madd52hi_epu64(__m128i __X, __m128i __Y, __m128i __Z) {
6 // CHECK-LABEL: @test_mm_madd52hi_epu64
7 // CHECK: @llvm.x86.avx512.vpmadd52h.uq.128
8 return _mm_madd52hi_epu64(__X, __Y, __Z);
11 __m128i test_mm_mask_madd52hi_epu64(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y) {
12 // CHECK-LABEL: @test_mm_mask_madd52hi_epu64
13 // CHECK: @llvm.x86.avx512.vpmadd52h.uq.128
14 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
15 return _mm_mask_madd52hi_epu64(__W, __M, __X, __Y);
18 __m128i test_mm_maskz_madd52hi_epu64(__mmask8 __M, __m128i __X, __m128i __Y, __m128i __Z) {
19 // CHECK-LABEL: @test_mm_maskz_madd52hi_epu64
20 // CHECK: @llvm.x86.avx512.vpmadd52h.uq.128
21 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
22 return _mm_maskz_madd52hi_epu64(__M, __X, __Y, __Z);
25 __m256i test_mm256_madd52hi_epu64(__m256i __X, __m256i __Y, __m256i __Z) {
26 // CHECK-LABEL: @test_mm256_madd52hi_epu64
27 // CHECK: @llvm.x86.avx512.vpmadd52h.uq.256
28 return _mm256_madd52hi_epu64(__X, __Y, __Z);
31 __m256i test_mm256_mask_madd52hi_epu64(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
32 // CHECK-LABEL: @test_mm256_mask_madd52hi_epu64
33 // CHECK: @llvm.x86.avx512.vpmadd52h.uq.256
34 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
35 return _mm256_mask_madd52hi_epu64(__W, __M, __X, __Y);
38 __m256i test_mm256_maskz_madd52hi_epu64(__mmask8 __M, __m256i __X, __m256i __Y, __m256i __Z) {
39 // CHECK-LABEL: @test_mm256_maskz_madd52hi_epu64
40 // CHECK: @llvm.x86.avx512.vpmadd52h.uq.256
41 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
42 return _mm256_maskz_madd52hi_epu64(__M, __X, __Y, __Z);
45 __m128i test_mm_madd52lo_epu64(__m128i __X, __m128i __Y, __m128i __Z) {
46 // CHECK-LABEL: @test_mm_madd52lo_epu64
47 // CHECK: @llvm.x86.avx512.vpmadd52l.uq.128
48 return _mm_madd52lo_epu64(__X, __Y, __Z);
51 __m128i test_mm_mask_madd52lo_epu64(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y) {
52 // CHECK-LABEL: @test_mm_mask_madd52lo_epu64
53 // CHECK: @llvm.x86.avx512.vpmadd52l.uq.128
54 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
55 return _mm_mask_madd52lo_epu64(__W, __M, __X, __Y);
58 __m128i test_mm_maskz_madd52lo_epu64(__mmask8 __M, __m128i __X, __m128i __Y, __m128i __Z) {
59 // CHECK-LABEL: @test_mm_maskz_madd52lo_epu64
60 // CHECK: @llvm.x86.avx512.vpmadd52l.uq.128
61 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
62 return _mm_maskz_madd52lo_epu64(__M, __X, __Y, __Z);
65 __m256i test_mm256_madd52lo_epu64(__m256i __X, __m256i __Y, __m256i __Z) {
66 // CHECK-LABEL: @test_mm256_madd52lo_epu64
67 // CHECK: @llvm.x86.avx512.vpmadd52l.uq.256
68 return _mm256_madd52lo_epu64(__X, __Y, __Z);
71 __m256i test_mm256_mask_madd52lo_epu64(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
72 // CHECK-LABEL: @test_mm256_mask_madd52lo_epu64
73 // CHECK: @llvm.x86.avx512.vpmadd52l.uq.256
74 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
75 return _mm256_mask_madd52lo_epu64(__W, __M, __X, __Y);
78 __m256i test_mm256_maskz_madd52lo_epu64(__mmask8 __M, __m256i __X, __m256i __Y, __m256i __Z) {
79 // CHECK-LABEL: @test_mm256_maskz_madd52lo_epu64
80 // CHECK: @llvm.x86.avx512.vpmadd52l.uq.256
81 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
82 return _mm256_maskz_madd52lo_epu64(__M, __X, __Y, __Z);