Skip to content

Commit a62a80c

Browse files
committed
[clang][x86] Update SSE42 intrinsic tests for both C/C++
Requires some better checking of labels and some call instructions to handle additional markers
1 parent 8d13e7b commit a62a80c

File tree

1 file changed

+24
-20
lines changed

1 file changed

+24
-20
lines changed
Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse4.2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64
2-
// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse4.2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64
3-
// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse4.2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK
4-
// RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse4.2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK
1+
// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse4.2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64
2+
// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse4.2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64
3+
// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse4.2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK
4+
// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse4.2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK
5+
// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse4.2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64
6+
// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +sse4.2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK,X64
7+
// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse4.2 -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK
8+
// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +sse4.2 -fno-signed-char -emit-llvm -o - -Wall -Werror | FileCheck %s --check-prefixes=CHECK
59

610

711
#include <immintrin.h>
@@ -10,19 +14,19 @@
1014

1115
int test_mm_cmpestra(__m128i A, int LA, __m128i B, int LB) {
1216
// CHECK-LABEL: test_mm_cmpestra
13-
// CHECK: call i32 @llvm.x86.sse42.pcmpestria128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
17+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpestria128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
1418
return _mm_cmpestra(A, LA, B, LB, 7);
1519
}
1620

1721
int test_mm_cmpestrc(__m128i A, int LA, __m128i B, int LB) {
1822
// CHECK-LABEL: test_mm_cmpestrc
19-
// CHECK: call i32 @llvm.x86.sse42.pcmpestric128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
23+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpestric128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
2024
return _mm_cmpestrc(A, LA, B, LB, 7);
2125
}
2226

2327
int test_mm_cmpestri(__m128i A, int LA, __m128i B, int LB) {
2428
// CHECK-LABEL: test_mm_cmpestri
25-
// CHECK: call i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
29+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpestri128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
2630
return _mm_cmpestri(A, LA, B, LB, 7);
2731
}
2832

@@ -34,19 +38,19 @@ __m128i test_mm_cmpestrm(__m128i A, int LA, __m128i B, int LB) {
3438

3539
int test_mm_cmpestro(__m128i A, int LA, __m128i B, int LB) {
3640
// CHECK-LABEL: test_mm_cmpestro
37-
// CHECK: call i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
41+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpestrio128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
3842
return _mm_cmpestro(A, LA, B, LB, 7);
3943
}
4044

4145
int test_mm_cmpestrs(__m128i A, int LA, __m128i B, int LB) {
4246
// CHECK-LABEL: test_mm_cmpestrs
43-
// CHECK: call i32 @llvm.x86.sse42.pcmpestris128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
47+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpestris128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
4448
return _mm_cmpestrs(A, LA, B, LB, 7);
4549
}
4650

4751
int test_mm_cmpestrz(__m128i A, int LA, __m128i B, int LB) {
4852
// CHECK-LABEL: test_mm_cmpestrz
49-
// CHECK: call i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
53+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpestriz128(<16 x i8> %{{.*}}, i32 %{{.*}}, <16 x i8> %{{.*}}, i32 %{{.*}}, i8 7)
5054
return _mm_cmpestrz(A, LA, B, LB, 7);
5155
}
5256

@@ -58,19 +62,19 @@ __m128i test_mm_cmpgt_epi64(__m128i A, __m128i B) {
5862

5963
int test_mm_cmpistra(__m128i A, __m128i B) {
6064
// CHECK-LABEL: test_mm_cmpistra
61-
// CHECK: call i32 @llvm.x86.sse42.pcmpistria128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
65+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpistria128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
6266
return _mm_cmpistra(A, B, 7);
6367
}
6468

6569
int test_mm_cmpistrc(__m128i A, __m128i B) {
6670
// CHECK-LABEL: test_mm_cmpistrc
67-
// CHECK: call i32 @llvm.x86.sse42.pcmpistric128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
71+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpistric128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
6872
return _mm_cmpistrc(A, B, 7);
6973
}
7074

7175
int test_mm_cmpistri(__m128i A, __m128i B) {
7276
// CHECK-LABEL: test_mm_cmpistri
73-
// CHECK: call i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
77+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpistri128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
7478
return _mm_cmpistri(A, B, 7);
7579
}
7680

@@ -82,44 +86,44 @@ __m128i test_mm_cmpistrm(__m128i A, __m128i B) {
8286

8387
int test_mm_cmpistro(__m128i A, __m128i B) {
8488
// CHECK-LABEL: test_mm_cmpistro
85-
// CHECK: call i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
89+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpistrio128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
8690
return _mm_cmpistro(A, B, 7);
8791
}
8892

8993
int test_mm_cmpistrs(__m128i A, __m128i B) {
9094
// CHECK-LABEL: test_mm_cmpistrs
91-
// CHECK: call i32 @llvm.x86.sse42.pcmpistris128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
95+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpistris128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
9296
return _mm_cmpistrs(A, B, 7);
9397
}
9498

9599
int test_mm_cmpistrz(__m128i A, __m128i B) {
96100
// CHECK-LABEL: test_mm_cmpistrz
97-
// CHECK: call i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
101+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.pcmpistriz128(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i8 7)
98102
return _mm_cmpistrz(A, B, 7);
99103
}
100104

101105
unsigned int test_mm_crc32_u8(unsigned int CRC, unsigned char V) {
102106
// CHECK-LABEL: test_mm_crc32_u8
103-
// CHECK: call i32 @llvm.x86.sse42.crc32.32.8(i32 %{{.*}}, i8 %{{.*}})
107+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.crc32.32.8(i32 %{{.*}}, i8 %{{.*}})
104108
return _mm_crc32_u8(CRC, V);
105109
}
106110

107111
unsigned int test_mm_crc32_u16(unsigned int CRC, unsigned short V) {
108112
// CHECK-LABEL: test_mm_crc32_u16
109-
// CHECK: call i32 @llvm.x86.sse42.crc32.32.16(i32 %{{.*}}, i16 %{{.*}})
113+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.crc32.32.16(i32 %{{.*}}, i16 %{{.*}})
110114
return _mm_crc32_u16(CRC, V);
111115
}
112116

113117
unsigned int test_mm_crc32_u32(unsigned int CRC, unsigned int V) {
114118
// CHECK-LABEL: test_mm_crc32_u32
115-
// CHECK: call i32 @llvm.x86.sse42.crc32.32.32(i32 %{{.*}}, i32 %{{.*}})
119+
// CHECK: call {{.*}}i32 @llvm.x86.sse42.crc32.32.32(i32 %{{.*}}, i32 %{{.*}})
116120
return _mm_crc32_u32(CRC, V);
117121
}
118122

119123
#ifdef __x86_64__
120124
unsigned long long test_mm_crc32_u64(unsigned long long CRC, unsigned long long V) {
121125
// X64-LABEL: test_mm_crc32_u64
122-
// X64: call i64 @llvm.x86.sse42.crc32.64.64(i64 %{{.*}}, i64 %{{.*}})
126+
// X64: call {{.*}}i64 @llvm.x86.sse42.crc32.64.64(i64 %{{.*}}, i64 %{{.*}})
123127
return _mm_crc32_u64(CRC, V);
124128
}
125129
#endif

0 commit comments

Comments
 (0)