Skip to content

Commit 6ad39bc

Browse files
committed
[X86] avxifma-builtins.c / avx512ifma-builtins.c / avx512ifmavl-builtins.c - add C/C++ and 32/64-bit test coverage
1 parent a9ff15d commit 6ad39bc

File tree

3 files changed

+64
-56
lines changed

3 files changed

+64
-56
lines changed
Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,47 @@
1-
// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror | FileCheck %s
1+
// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror | FileCheck %s
2+
// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror | FileCheck %s
3+
// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror | FileCheck %s
4+
// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512ifma -emit-llvm -o - -Wall -Werror | FileCheck %s
25

36

47
#include <immintrin.h>
58

69
__m512i test_mm512_madd52hi_epu64(__m512i __X, __m512i __Y, __m512i __Z) {
7-
// CHECK-LABEL: @test_mm512_madd52hi_epu64
8-
// CHECK: @llvm.x86.avx512.vpmadd52h.uq.512
10+
// CHECK-LABEL: test_mm512_madd52hi_epu64
11+
// CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
912
return _mm512_madd52hi_epu64(__X, __Y, __Z);
1013
}
1114

1215
__m512i test_mm512_mask_madd52hi_epu64(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {
13-
// CHECK-LABEL: @test_mm512_mask_madd52hi_epu64
14-
// CHECK: @llvm.x86.avx512.vpmadd52h.uq.512
16+
// CHECK-LABEL: test_mm512_mask_madd52hi_epu64
17+
// CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
1518
// CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
1619
return _mm512_mask_madd52hi_epu64(__W, __M, __X, __Y);
1720
}
1821

1922
__m512i test_mm512_maskz_madd52hi_epu64(__mmask8 __M, __m512i __X, __m512i __Y, __m512i __Z) {
20-
// CHECK-LABEL: @test_mm512_maskz_madd52hi_epu64
21-
// CHECK: @llvm.x86.avx512.vpmadd52h.uq.512
23+
// CHECK-LABEL: test_mm512_maskz_madd52hi_epu64
24+
// CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52h.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
2225
// CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2326
return _mm512_maskz_madd52hi_epu64(__M, __X, __Y, __Z);
2427
}
2528

2629
__m512i test_mm512_madd52lo_epu64(__m512i __X, __m512i __Y, __m512i __Z) {
27-
// CHECK-LABEL: @test_mm512_madd52lo_epu64
28-
// CHECK: @llvm.x86.avx512.vpmadd52l.uq.512
30+
// CHECK-LABEL: test_mm512_madd52lo_epu64
31+
// CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52l.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
2932
return _mm512_madd52lo_epu64(__X, __Y, __Z);
3033
}
3134

3235
__m512i test_mm512_mask_madd52lo_epu64(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {
33-
// CHECK-LABEL: @test_mm512_mask_madd52lo_epu64
34-
// CHECK: @llvm.x86.avx512.vpmadd52l.uq.512
36+
// CHECK-LABEL: test_mm512_mask_madd52lo_epu64
37+
// CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52l.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
3538
// CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3639
return _mm512_mask_madd52lo_epu64(__W, __M, __X, __Y);
3740
}
3841

3942
__m512i test_mm512_maskz_madd52lo_epu64(__mmask8 __M, __m512i __X, __m512i __Y, __m512i __Z) {
40-
// CHECK-LABEL: @test_mm512_maskz_madd52lo_epu64
41-
// CHECK: @llvm.x86.avx512.vpmadd52l.uq.512
43+
// CHECK-LABEL: test_mm512_maskz_madd52lo_epu64
44+
// CHECK: call {{.*}}<8 x i64> @llvm.x86.avx512.vpmadd52l.uq.512(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
4245
// CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4346
return _mm512_maskz_madd52lo_epu64(__M, __X, __Y, __Z);
4447
}
Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,86 @@
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
1+
// RUN: %clang_cc1 -x c %s -flax-vector-conversions=none -ffreestanding -triple=x86_64-apple-darwin -target-feature +avx512ifma -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
2+
// RUN: %clang_cc1 -x c %s -flax-vector-conversions=none -ffreestanding -triple=i386-apple-darwin -target-feature +avx512ifma -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
3+
// RUN: %clang_cc1 -x c++ %s -flax-vector-conversions=none -ffreestanding -triple=x86_64-apple-darwin -target-feature +avx512ifma -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
4+
// RUN: %clang_cc1 -x c++ %s -flax-vector-conversions=none -ffreestanding -triple=i386-apple-darwin -target-feature +avx512ifma -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
25

36
#include <immintrin.h>
47

58
__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
9+
// CHECK-LABEL: test_mm_madd52hi_epu64
10+
// CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52h.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
811
return _mm_madd52hi_epu64(__X, __Y, __Z);
912
}
1013

1114
__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
15+
// CHECK-LABEL: test_mm_mask_madd52hi_epu64
16+
// CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52h.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
1417
// CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1518
return _mm_mask_madd52hi_epu64(__W, __M, __X, __Y);
1619
}
1720

1821
__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
22+
// CHECK-LABEL: test_mm_maskz_madd52hi_epu64
23+
// CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52h.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2124
// CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
2225
return _mm_maskz_madd52hi_epu64(__M, __X, __Y, __Z);
2326
}
2427

2528
__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
29+
// CHECK-LABEL: test_mm256_madd52hi_epu64
30+
// CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52h.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
2831
return _mm256_madd52hi_epu64(__X, __Y, __Z);
2932
}
3033

3134
__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
35+
// CHECK-LABEL: test_mm256_mask_madd52hi_epu64
36+
// CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52h.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
3437
// CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
3538
return _mm256_mask_madd52hi_epu64(__W, __M, __X, __Y);
3639
}
3740

3841
__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
42+
// CHECK-LABEL: test_mm256_maskz_madd52hi_epu64
43+
// CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52h.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
4144
// CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
4245
return _mm256_maskz_madd52hi_epu64(__M, __X, __Y, __Z);
4346
}
4447

4548
__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
49+
// CHECK-LABEL: test_mm_madd52lo_epu64
50+
// CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52l.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
4851
return _mm_madd52lo_epu64(__X, __Y, __Z);
4952
}
5053

5154
__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
55+
// CHECK-LABEL: test_mm_mask_madd52lo_epu64
56+
// CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52l.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
5457
// CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
5558
return _mm_mask_madd52lo_epu64(__W, __M, __X, __Y);
5659
}
5760

5861
__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
62+
// CHECK-LABEL: test_mm_maskz_madd52lo_epu64
63+
// CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52l.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
6164
// CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
6265
return _mm_maskz_madd52lo_epu64(__M, __X, __Y, __Z);
6366
}
6467

6568
__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
69+
// CHECK-LABEL: test_mm256_madd52lo_epu64
70+
// CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52l.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
6871
return _mm256_madd52lo_epu64(__X, __Y, __Z);
6972
}
7073

7174
__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
75+
// CHECK-LABEL: test_mm256_mask_madd52lo_epu64
76+
// CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52l.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
7477
// CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
7578
return _mm256_mask_madd52lo_epu64(__W, __M, __X, __Y);
7679
}
7780

7881
__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
82+
// CHECK-LABEL: test_mm256_maskz_madd52lo_epu64
83+
// CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52l.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
8184
// CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
8285
return _mm256_maskz_madd52lo_epu64(__M, __X, __Y, __Z);
8386
}
Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,54 @@
1-
// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror | FileCheck %s
2-
// RUN: %clang_cc1 -ffreestanding %s -triple=i386-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror | FileCheck %s
1+
// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror | FileCheck %s
2+
// RUN: %clang_cc1 -x c -ffreestanding %s -triple=i386-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror | FileCheck %s
3+
// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror | FileCheck %s
4+
// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=i386-apple-darwin -target-feature +avxifma -emit-llvm -o - -Wall -Werror | FileCheck %s
35

46
#include <immintrin.h>
57

68
__m128i test_mm_madd52hi_epu64(__m128i __X, __m128i __Y, __m128i __Z) {
7-
// CHECK-LABEL: @test_mm_madd52hi_epu64
8-
// CHECK: call <2 x i64> @llvm.x86.avx512.vpmadd52h.uq.128
9+
// CHECK-LABEL: test_mm_madd52hi_epu64
10+
// CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52h.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
911
return _mm_madd52hi_epu64(__X, __Y, __Z);
1012
}
1113

1214
__m256i test_mm256_madd52hi_epu64(__m256i __X, __m256i __Y, __m256i __Z) {
13-
// CHECK-LABEL: @test_mm256_madd52hi_epu64
14-
// CHECK: call <4 x i64> @llvm.x86.avx512.vpmadd52h.uq.256
15+
// CHECK-LABEL: test_mm256_madd52hi_epu64
16+
// CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52h.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
1517
return _mm256_madd52hi_epu64(__X, __Y, __Z);
1618
}
1719

1820
__m128i test_mm_madd52lo_epu64(__m128i __X, __m128i __Y, __m128i __Z) {
19-
// CHECK-LABEL: @test_mm_madd52lo_epu64
20-
// CHECK: call <2 x i64> @llvm.x86.avx512.vpmadd52l.uq.128
21+
// CHECK-LABEL: test_mm_madd52lo_epu64
22+
// CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52l.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
2123
return _mm_madd52lo_epu64(__X, __Y, __Z);
2224
}
2325

2426
__m256i test_mm256_madd52lo_epu64(__m256i __X, __m256i __Y, __m256i __Z) {
25-
// CHECK-LABEL: @test_mm256_madd52lo_epu64
26-
// CHECK: call <4 x i64> @llvm.x86.avx512.vpmadd52l.uq.256
27+
// CHECK-LABEL: test_mm256_madd52lo_epu64
28+
// CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52l.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
2729
return _mm256_madd52lo_epu64(__X, __Y, __Z);
2830
}
2931

3032
__m128i test_mm_madd52hi_avx_epu64(__m128i __X, __m128i __Y, __m128i __Z) {
31-
// CHECK-LABEL: @test_mm_madd52hi_avx_epu64
32-
// CHECK: call <2 x i64> @llvm.x86.avx512.vpmadd52h.uq.128
33+
// CHECK-LABEL: test_mm_madd52hi_avx_epu64
34+
// CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52h.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
3335
return _mm_madd52hi_avx_epu64(__X, __Y, __Z);
3436
}
3537

3638
__m256i test_mm256_madd52hi_avx_epu64(__m256i __X, __m256i __Y, __m256i __Z) {
37-
// CHECK-LABEL: @test_mm256_madd52hi_avx_epu64
38-
// CHECK: call <4 x i64> @llvm.x86.avx512.vpmadd52h.uq.256
39+
// CHECK-LABEL: test_mm256_madd52hi_avx_epu64
40+
// CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52h.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
3941
return _mm256_madd52hi_avx_epu64(__X, __Y, __Z);
4042
}
4143

4244
__m128i test_mm_madd52lo_avx_epu64(__m128i __X, __m128i __Y, __m128i __Z) {
43-
// CHECK-LABEL: @test_mm_madd52lo_avx_epu64
44-
// CHECK: call <2 x i64> @llvm.x86.avx512.vpmadd52l.uq.128
45+
// CHECK-LABEL: test_mm_madd52lo_avx_epu64
46+
// CHECK: call {{.*}}<2 x i64> @llvm.x86.avx512.vpmadd52l.uq.128(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
4547
return _mm_madd52lo_avx_epu64(__X, __Y, __Z);
4648
}
4749

4850
__m256i test_mm256_madd52lo_avx_epu64(__m256i __X, __m256i __Y, __m256i __Z) {
49-
// CHECK-LABEL: @test_mm256_madd52lo_avx_epu64
50-
// CHECK: call <4 x i64> @llvm.x86.avx512.vpmadd52l.uq.256
51+
// CHECK-LABEL: test_mm256_madd52lo_avx_epu64
52+
// CHECK: call {{.*}}<4 x i64> @llvm.x86.avx512.vpmadd52l.uq.256(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
5153
return _mm256_madd52lo_avx_epu64(__X, __Y, __Z);
5254
}

0 commit comments

Comments
 (0)