Skip to content

Commit 0207e38

Browse files
committed
Change getMaskValue usage, add LLVM and OGCG test
1 parent fc5347a commit 0207e38

File tree

3 files changed

+179
-33
lines changed

3 files changed

+179
-33
lines changed

clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ mlir::Value CIRGenFunction::emitX86BuiltinExpr(unsigned builtinID,
561561
std::min(cast<cir::VectorType>(ops[0].getType()).getSize(),
562562
cast<cir::VectorType>(ops[2].getType()).getSize());
563563
ops[3] =
564-
getMaskVecValue(*this, ops[3], minElts, getLoc(expr->getExprLoc()));
564+
getMaskVecValue(*this, expr, ops[3], minElts);
565565
return emitIntrinsicCallOp(*this, expr, intrinsicName.str(),
566566
convertType(expr->getType()), ops);
567567
}

clang/test/CIR/CodeGen/X86/avx512f-builtins.c

Lines changed: 128 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -79,97 +79,193 @@ __m512i test_mm512_undefined_epi32(void) {
7979
}
8080

8181
__m256 test_mm512_i64gather_ps(__m512i __index, void const *__addr) {
82-
// CHECK-LABEL: test_mm512_i64gather_ps
83-
// CHECK: @llvm.x86.avx512.mask.gather.qps.512
82+
// CIR-LABEL: test_mm512_i64gather_ps
83+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.qps.512"
84+
85+
// LLVM-LABEL: test_mm512_i64gather_ps
86+
// LLVM: call <8 x float> @llvm.x86.avx512.mask.gather.qps.512
87+
88+
// OGCG-LABEL: test_mm512_i64gather_ps
89+
// OGCG: call <8 x float> @llvm.x86.avx512.mask.gather.qps.512
8490
return _mm512_i64gather_ps(__index, __addr, 2);
8591
}
8692

8793
__m256 test_mm512_mask_i64gather_ps(__m256 __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
88-
// CHECK-LABEL: test_mm512_mask_i64gather_ps
89-
// CHECK: @llvm.x86.avx512.mask.gather.qps.512
94+
// CIR-LABEL: test_mm512_mask_i64gather_ps
95+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.qps.512"
96+
97+
// LLVM-LABEL: test_mm512_mask_i64gather_ps
98+
// LLVM: call <8 x float> @llvm.x86.avx512.mask.gather.qps.512
99+
100+
// OGCG-LABEL: test_mm512_mask_i64gather_ps
101+
// OGCG: call <8 x float> @llvm.x86.avx512.mask.gather.qps.512
90102
return _mm512_mask_i64gather_ps(__v1_old, __mask, __index, __addr, 2);
91103
}
92104

93105
__m256i test_mm512_i64gather_epi32(__m512i __index, void const *__addr) {
94-
// CHECK-LABEL: test_mm512_i64gather_epi32
95-
// CHECK: @llvm.x86.avx512.mask.gather.qpi.512
106+
// CIR-LABEL: test_mm512_i64gather_epi32
107+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.qpi.512"
108+
109+
// LLVM-LABEL: test_mm512_i64gather_epi32
110+
// LLVM: call <8 x i32> @llvm.x86.avx512.mask.gather.qpi.512
111+
112+
// OGCG-LABEL: test_mm512_i64gather_epi32
113+
// OGCG: call <8 x i32> @llvm.x86.avx512.mask.gather.qpi.512
96114
return _mm512_i64gather_epi32(__index, __addr, 2);
97115
}
98116

99117
__m256i test_mm512_mask_i64gather_epi32(__m256i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
100-
// CHECK-LABEL: test_mm512_mask_i64gather_epi32
101-
// CHECK: @llvm.x86.avx512.mask.gather.qpi.512
118+
// CIR-LABEL: test_mm512_mask_i64gather_epi32
119+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.qpi.512"
120+
121+
// LLVM-LABEL: test_mm512_mask_i64gather_epi32
122+
// LLVM: call <8 x i32> @llvm.x86.avx512.mask.gather.qpi.512
123+
124+
// OGCG-LABEL: test_mm512_mask_i64gather_epi32
125+
// OGCG: call <8 x i32> @llvm.x86.avx512.mask.gather.qpi.512
102126
return _mm512_mask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2);
103127
}
104128

105129
__m512d test_mm512_i64gather_pd(__m512i __index, void const *__addr) {
106-
// CHECK-LABEL: test_mm512_i64gather_pd
107-
// CHECK: @llvm.x86.avx512.mask.gather.qpd.512
130+
// CIR-LABEL: test_mm512_i64gather_pd
131+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.qpd.512
132+
133+
// LLVM-LABEL: test_mm512_i64gather_pd
134+
// LLVM: call <8 x double> @llvm.x86.avx512.mask.gather.qpd.512
135+
136+
// OGCG-LABEL: test_mm512_i64gather_pd
137+
// OGCG: call <8 x double> @llvm.x86.avx512.mask.gather.qpd.512
108138
return _mm512_i64gather_pd(__index, __addr, 2);
109139
}
110140

111141
__m512d test_mm512_mask_i64gather_pd(__m512d __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
112-
// CHECK-LABEL: test_mm512_mask_i64gather_pd
113-
// CHECK: @llvm.x86.avx512.mask.gather.qpd.512
142+
// CIR-LABEL: test_mm512_mask_i64gather_pd
143+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.qpd.512
144+
145+
// LLVM-LABEL: test_mm512_mask_i64gather_pd
146+
// LLVM: call <8 x double> @llvm.x86.avx512.mask.gather.qpd.512
147+
148+
// OGCG-LABEL: test_mm512_mask_i64gather_pd
149+
// OGCG: call <8 x double> @llvm.x86.avx512.mask.gather.qpd.512
114150
return _mm512_mask_i64gather_pd(__v1_old, __mask, __index, __addr, 2);
115151
}
116152

117153
__m512i test_mm512_i64gather_epi64(__m512i __index, void const *__addr) {
118-
// CHECK-LABEL: test_mm512_i64gather_epi64
119-
// CHECK: @llvm.x86.avx512.mask.gather.qpq.512
154+
// CIR-LABEL: test_mm512_i64gather_epi64
155+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.qpq.512
156+
157+
// LLVM-LABEL: test_mm512_i64gather_epi64
158+
// LLVM: call <8 x i64> @llvm.x86.avx512.mask.gather.qpq.512
159+
160+
// OGCG-LABEL: test_mm512_i64gather_epi64
161+
// OGCG: call <8 x i64> @llvm.x86.avx512.mask.gather.qpq.512
120162
return _mm512_i64gather_epi64(__index, __addr, 2);
121163
}
122164

123165
__m512i test_mm512_mask_i64gather_epi64(__m512i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
124-
// CHECK-LABEL: test_mm512_mask_i64gather_epi64
125-
// CHECK: @llvm.x86.avx512.mask.gather.qpq.512
166+
// CIR-LABEL: test_mm512_mask_i64gather_epi64
167+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.qpq.512
168+
169+
// LLVM-LABEL: test_mm512_mask_i64gather_epi64
170+
// LLVM: call <8 x i64> @llvm.x86.avx512.mask.gather.qpq.512
171+
172+
// OGCG-LABEL: test_mm512_mask_i64gather_epi64
173+
// OGCG: call <8 x i64> @llvm.x86.avx512.mask.gather.qpq.512
126174
return _mm512_mask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2);
127175
}
128176

129177
__m512 test_mm512_i32gather_ps(__m512i __index, void const *__addr) {
130-
// CHECK-LABEL: test_mm512_i32gather_ps
131-
// CHECK: @llvm.x86.avx512.mask.gather.dps.512
178+
// CIR-LABEL: test_mm512_i32gather_ps
179+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.dps.512
180+
181+
// LLVM-LABEL: test_mm512_i32gather_ps
182+
// LLVM: call <16 x float> @llvm.x86.avx512.mask.gather.dps.512
183+
184+
// OGCG-LABEL: test_mm512_i32gather_ps
185+
// OGCG: call <16 x float> @llvm.x86.avx512.mask.gather.dps.512
132186
return _mm512_i32gather_ps(__index, __addr, 2);
133187
}
134188

135189
__m512 test_mm512_mask_i32gather_ps(__m512 v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
136-
// CHECK-LABEL: test_mm512_mask_i32gather_ps
137-
// CHECK: @llvm.x86.avx512.mask.gather.dps.512
190+
// CIR-LABEL: test_mm512_mask_i32gather_ps
191+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.dps.512
192+
193+
// LLVM-LABEL: test_mm512_mask_i32gather_ps
194+
// LLVM: call <16 x float> @llvm.x86.avx512.mask.gather.dps.512
195+
196+
// OGCG-LABEL: test_mm512_mask_i32gather_ps
197+
// OGCG: call <16 x float> @llvm.x86.avx512.mask.gather.dps.512
138198
return _mm512_mask_i32gather_ps(v1_old, __mask, __index, __addr, 2);
139199
}
140200

141201
__m512i test_mm512_i32gather_epi32(__m512i __index, void const *__addr) {
142-
// CHECK-LABEL: test_mm512_i32gather_epi32
143-
// CHECK: @llvm.x86.avx512.mask.gather.dpi.512
202+
// CIR-LABEL: test_mm512_i32gather_epi32
203+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.dpi.512
204+
205+
// LLVM-LABEL: test_mm512_i32gather_epi32
206+
// LLVM: call <16 x i32> @llvm.x86.avx512.mask.gather.dpi.512
207+
208+
// OGCG-LABEL: test_mm512_i32gather_epi32
209+
// OGCG: call <16 x i32> @llvm.x86.avx512.mask.gather.dpi.512
144210
return _mm512_i32gather_epi32(__index, __addr, 2);
145211
}
146212

147213
__m512i test_mm512_mask_i32gather_epi32(__m512i __v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
148-
// CHECK-LABEL: test_mm512_mask_i32gather_epi32
149-
// CHECK: @llvm.x86.avx512.mask.gather.dpi.512
214+
// CIR-LABEL: test_mm512_mask_i32gather_epi32
215+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.dpi.512
216+
217+
// LLVM-LABEL: test_mm512_mask_i32gather_epi32
218+
// LLVM: call <16 x i32> @llvm.x86.avx512.mask.gather.dpi.512
219+
220+
// OGCG-LABEL: test_mm512_mask_i32gather_epi32
221+
// OGCG: call <16 x i32> @llvm.x86.avx512.mask.gather.dpi.512
150222
return _mm512_mask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2);
151223
}
152224

153225
__m512d test_mm512_i32gather_pd(__m256i __index, void const *__addr) {
154-
// CHECK-LABEL: test_mm512_i32gather_pd
155-
// CHECK: @llvm.x86.avx512.mask.gather.dpd.512
226+
// CIR-LABEL: test_mm512_i32gather_pd
227+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.dpd.512
228+
229+
// LLVM-LABEL: test_mm512_i32gather_pd
230+
// LLVM: call <8 x double> @llvm.x86.avx512.mask.gather.dpd.512
231+
232+
// OGCG-LABEL: test_mm512_i32gather_pd
233+
// OGCG: call <8 x double> @llvm.x86.avx512.mask.gather.dpd.512
156234
return _mm512_i32gather_pd(__index, __addr, 2);
157235
}
158236

159237
__m512d test_mm512_mask_i32gather_pd(__m512d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
160-
// CHECK-LABEL: test_mm512_mask_i32gather_pd
161-
// CHECK: @llvm.x86.avx512.mask.gather.dpd.512
238+
// CIR-LABEL: test_mm512_mask_i32gather_pd
239+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.dpd.512
240+
241+
// LLVM-LABEL: test_mm512_mask_i32gather_pd
242+
// LLVM: call <8 x double> @llvm.x86.avx512.mask.gather.dpd.512
243+
244+
// OGCG-LABEL: test_mm512_mask_i32gather_pd
245+
// OGCG: call <8 x double> @llvm.x86.avx512.mask.gather.dpd.512
162246
return _mm512_mask_i32gather_pd(__v1_old, __mask, __index, __addr, 2);
163247
}
164248

165249
__m512i test_mm512_i32gather_epi64(__m256i __index, void const *__addr) {
166-
// CHECK-LABEL: test_mm512_i32gather_epi64
167-
// CHECK: @llvm.x86.avx512.mask.gather.dpq.512
250+
// CIR-LABEL: test_mm512_i32gather_epi64
251+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.dpq.512
252+
253+
// LLVM-LABEL: test_mm512_i32gather_epi64
254+
// LLVM: call <8 x i64> @llvm.x86.avx512.mask.gather.dpq.512
255+
256+
// OGCG-LABEL: test_mm512_i32gather_epi64
257+
// OGCG: call <8 x i64> @llvm.x86.avx512.mask.gather.dpq.512
168258
return _mm512_i32gather_epi64(__index, __addr, 2);
169259
}
170260

171261
__m512i test_mm512_mask_i32gather_epi64(__m512i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
172-
// CHECK-LABEL: test_mm512_mask_i32gather_epi64
173-
// CHECK: @llvm.x86.avx512.mask.gather.dpq.512
262+
// CIR-LABEL: test_mm512_mask_i32gather_epi64
263+
// CIR: cir.call_llvm_intrinsic "x86.avx512.mask.gather.dpq.512
264+
265+
// LLVM-LABEL: test_mm512_mask_i32gather_epi64
266+
// LLVM: call <8 x i64> @llvm.x86.avx512.mask.gather.dpq.512
267+
268+
// OGCG-LABEL: test_mm512_mask_i32gather_epi64
269+
// OGCG: call <8 x i64> @llvm.x86.avx512.mask.gather.dpq.512
174270
return _mm512_mask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
175271
}

0 commit comments

Comments
 (0)