Skip to content

Commit 98b761f

Browse files
committed
[RISCV] Rename vfredusum/vfredosum intrinsic test files. Merge some tests. NFC
I recently renamed some tests from vfredsum to vfredusum without noticing they tested both ordered and unordered reductions. This patch renames them back. I've also merged test files for vfwredosum/vfwredusum into a single file for consistency with the other 3 floating point reduction test files. The inconsistency is what caused my original confusion.
1 parent d065b03 commit 98b761f

File tree

5 files changed

+218
-225
lines changed

5 files changed

+218
-225
lines changed

clang/test/CodeGen/RISCV/rvv-intrinsics/vfwredosum.c renamed to clang/test/CodeGen/RISCV/rvv-intrinsics/vfwredsum.c

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,3 +223,221 @@ vfloat32m1_t test_vfwredosum_vs_f16m4_f32m1_m (vbool4_t mask, vfloat32m1_t dest,
223223
vfloat32m1_t test_vfwredosum_vs_f16m8_f32m1_m (vbool2_t mask, vfloat32m1_t dest, vfloat16m8_t vector, vfloat32m1_t scalar, size_t vl) {
224224
return vfwredosum_vs_f16m8_f32m1_m(mask, dest, vector, scalar, vl);
225225
}
226+
227+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f32mf2_f64m1(
228+
// CHECK-RV64-NEXT: entry:
229+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.vfwredusum.nxv1f64.nxv1f32.i64(<vscale x 1 x double> [[DST:%.*]], <vscale x 1 x float> [[VECTOR:%.*]], <vscale x 1 x double> [[SCALAR:%.*]], i64 [[VL:%.*]])
230+
// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
231+
//
232+
vfloat64m1_t test_vfwredusum_vs_f32mf2_f64m1(vfloat64m1_t dst,
233+
vfloat32mf2_t vector,
234+
vfloat64m1_t scalar, size_t vl) {
235+
return vfwredusum_vs_f32mf2_f64m1(dst, vector, scalar, vl);
236+
}
237+
238+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f32m1_f64m1(
239+
// CHECK-RV64-NEXT: entry:
240+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.vfwredusum.nxv1f64.nxv2f32.i64(<vscale x 1 x double> [[DST:%.*]], <vscale x 2 x float> [[VECTOR:%.*]], <vscale x 1 x double> [[SCALAR:%.*]], i64 [[VL:%.*]])
241+
// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
242+
//
243+
vfloat64m1_t test_vfwredusum_vs_f32m1_f64m1(vfloat64m1_t dst,
244+
vfloat32m1_t vector,
245+
vfloat64m1_t scalar, size_t vl) {
246+
return vfwredusum_vs_f32m1_f64m1(dst, vector, scalar, vl);
247+
}
248+
249+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f32m2_f64m1(
250+
// CHECK-RV64-NEXT: entry:
251+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.vfwredusum.nxv1f64.nxv4f32.i64(<vscale x 1 x double> [[DST:%.*]], <vscale x 4 x float> [[VECTOR:%.*]], <vscale x 1 x double> [[SCALAR:%.*]], i64 [[VL:%.*]])
252+
// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
253+
//
254+
vfloat64m1_t test_vfwredusum_vs_f32m2_f64m1(vfloat64m1_t dst,
255+
vfloat32m2_t vector,
256+
vfloat64m1_t scalar, size_t vl) {
257+
return vfwredusum_vs_f32m2_f64m1(dst, vector, scalar, vl);
258+
}
259+
260+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f32m4_f64m1(
261+
// CHECK-RV64-NEXT: entry:
262+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.vfwredusum.nxv1f64.nxv8f32.i64(<vscale x 1 x double> [[DST:%.*]], <vscale x 8 x float> [[VECTOR:%.*]], <vscale x 1 x double> [[SCALAR:%.*]], i64 [[VL:%.*]])
263+
// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
264+
//
265+
vfloat64m1_t test_vfwredusum_vs_f32m4_f64m1(vfloat64m1_t dst,
266+
vfloat32m4_t vector,
267+
vfloat64m1_t scalar, size_t vl) {
268+
return vfwredusum_vs_f32m4_f64m1(dst, vector, scalar, vl);
269+
}
270+
271+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f32m8_f64m1(
272+
// CHECK-RV64-NEXT: entry:
273+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.vfwredusum.nxv1f64.nxv16f32.i64(<vscale x 1 x double> [[DST:%.*]], <vscale x 16 x float> [[VECTOR:%.*]], <vscale x 1 x double> [[SCALAR:%.*]], i64 [[VL:%.*]])
274+
// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
275+
//
276+
vfloat64m1_t test_vfwredusum_vs_f32m8_f64m1(vfloat64m1_t dst,
277+
vfloat32m8_t vector,
278+
vfloat64m1_t scalar, size_t vl) {
279+
return vfwredusum_vs_f32m8_f64m1(dst, vector, scalar, vl);
280+
}
281+
282+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f32mf2_f64m1_m(
283+
// CHECK-RV64-NEXT: entry:
284+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.vfwredusum.mask.nxv1f64.nxv1f32.i64(<vscale x 1 x double> [[DST:%.*]], <vscale x 1 x float> [[VECTOR:%.*]], <vscale x 1 x double> [[SCALAR:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]])
285+
// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
286+
//
287+
vfloat64m1_t test_vfwredusum_vs_f32mf2_f64m1_m(vbool64_t mask, vfloat64m1_t dst,
288+
vfloat32mf2_t vector,
289+
vfloat64m1_t scalar, size_t vl) {
290+
return vfwredusum_vs_f32mf2_f64m1_m(mask, dst, vector, scalar, vl);
291+
}
292+
293+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f32m1_f64m1_m(
294+
// CHECK-RV64-NEXT: entry:
295+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.vfwredusum.mask.nxv1f64.nxv2f32.i64(<vscale x 1 x double> [[DST:%.*]], <vscale x 2 x float> [[VECTOR:%.*]], <vscale x 1 x double> [[SCALAR:%.*]], <vscale x 2 x i1> [[MASK:%.*]], i64 [[VL:%.*]])
296+
// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
297+
//
298+
vfloat64m1_t test_vfwredusum_vs_f32m1_f64m1_m(vbool32_t mask, vfloat64m1_t dst,
299+
vfloat32m1_t vector,
300+
vfloat64m1_t scalar, size_t vl) {
301+
return vfwredusum_vs_f32m1_f64m1_m(mask, dst, vector, scalar, vl);
302+
}
303+
304+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f32m2_f64m1_m(
305+
// CHECK-RV64-NEXT: entry:
306+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.vfwredusum.mask.nxv1f64.nxv4f32.i64(<vscale x 1 x double> [[DST:%.*]], <vscale x 4 x float> [[VECTOR:%.*]], <vscale x 1 x double> [[SCALAR:%.*]], <vscale x 4 x i1> [[MASK:%.*]], i64 [[VL:%.*]])
307+
// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
308+
//
309+
vfloat64m1_t test_vfwredusum_vs_f32m2_f64m1_m(vbool16_t mask, vfloat64m1_t dst,
310+
vfloat32m2_t vector,
311+
vfloat64m1_t scalar, size_t vl) {
312+
return vfwredusum_vs_f32m2_f64m1_m(mask, dst, vector, scalar, vl);
313+
}
314+
315+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f32m4_f64m1_m(
316+
// CHECK-RV64-NEXT: entry:
317+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.vfwredusum.mask.nxv1f64.nxv8f32.i64(<vscale x 1 x double> [[DST:%.*]], <vscale x 8 x float> [[VECTOR:%.*]], <vscale x 1 x double> [[SCALAR:%.*]], <vscale x 8 x i1> [[MASK:%.*]], i64 [[VL:%.*]])
318+
// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
319+
//
320+
vfloat64m1_t test_vfwredusum_vs_f32m4_f64m1_m(vbool8_t mask, vfloat64m1_t dst,
321+
vfloat32m4_t vector,
322+
vfloat64m1_t scalar, size_t vl) {
323+
return vfwredusum_vs_f32m4_f64m1_m(mask, dst, vector, scalar, vl);
324+
}
325+
326+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f32m8_f64m1_m(
327+
// CHECK-RV64-NEXT: entry:
328+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 1 x double> @llvm.riscv.vfwredusum.mask.nxv1f64.nxv16f32.i64(<vscale x 1 x double> [[DST:%.*]], <vscale x 16 x float> [[VECTOR:%.*]], <vscale x 1 x double> [[SCALAR:%.*]], <vscale x 16 x i1> [[MASK:%.*]], i64 [[VL:%.*]])
329+
// CHECK-RV64-NEXT: ret <vscale x 1 x double> [[TMP0]]
330+
//
331+
vfloat64m1_t test_vfwredusum_vs_f32m8_f64m1_m(vbool4_t mask, vfloat64m1_t dst,
332+
vfloat32m8_t vector,
333+
vfloat64m1_t scalar, size_t vl) {
334+
return vfwredusum_vs_f32m8_f64m1_m(mask, dst, vector, scalar, vl);
335+
}
336+
337+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16mf4_f32m1(
338+
// CHECK-RV64-NEXT: entry:
339+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.nxv2f32.nxv1f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 1 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], i64 [[VL:%.*]])
340+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
341+
//
342+
vfloat32m1_t test_vfwredusum_vs_f16mf4_f32m1 (vfloat32m1_t dest, vfloat16mf4_t vector, vfloat32m1_t scalar, size_t vl) {
343+
return vfwredusum_vs_f16mf4_f32m1(dest, vector, scalar, vl);
344+
}
345+
346+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16mf2_f32m1(
347+
// CHECK-RV64-NEXT: entry:
348+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.nxv2f32.nxv2f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 2 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], i64 [[VL:%.*]])
349+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
350+
//
351+
vfloat32m1_t test_vfwredusum_vs_f16mf2_f32m1 (vfloat32m1_t dest, vfloat16mf2_t vector, vfloat32m1_t scalar, size_t vl) {
352+
return vfwredusum_vs_f16mf2_f32m1(dest, vector, scalar, vl);
353+
}
354+
355+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16m1_f32m1(
356+
// CHECK-RV64-NEXT: entry:
357+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.nxv2f32.nxv4f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 4 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], i64 [[VL:%.*]])
358+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
359+
//
360+
vfloat32m1_t test_vfwredusum_vs_f16m1_f32m1 (vfloat32m1_t dest, vfloat16m1_t vector, vfloat32m1_t scalar, size_t vl) {
361+
return vfwredusum_vs_f16m1_f32m1(dest, vector, scalar, vl);
362+
}
363+
364+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16m2_f32m1(
365+
// CHECK-RV64-NEXT: entry:
366+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.nxv2f32.nxv8f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 8 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], i64 [[VL:%.*]])
367+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
368+
//
369+
vfloat32m1_t test_vfwredusum_vs_f16m2_f32m1 (vfloat32m1_t dest, vfloat16m2_t vector, vfloat32m1_t scalar, size_t vl) {
370+
return vfwredusum_vs_f16m2_f32m1(dest, vector, scalar, vl);
371+
}
372+
373+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16m4_f32m1(
374+
// CHECK-RV64-NEXT: entry:
375+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.nxv2f32.nxv16f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 16 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], i64 [[VL:%.*]])
376+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
377+
//
378+
vfloat32m1_t test_vfwredusum_vs_f16m4_f32m1 (vfloat32m1_t dest, vfloat16m4_t vector, vfloat32m1_t scalar, size_t vl) {
379+
return vfwredusum_vs_f16m4_f32m1(dest, vector, scalar, vl);
380+
}
381+
382+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16m8_f32m1(
383+
// CHECK-RV64-NEXT: entry:
384+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.nxv2f32.nxv32f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 32 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], i64 [[VL:%.*]])
385+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
386+
//
387+
vfloat32m1_t test_vfwredusum_vs_f16m8_f32m1 (vfloat32m1_t dest, vfloat16m8_t vector, vfloat32m1_t scalar, size_t vl) {
388+
return vfwredusum_vs_f16m8_f32m1(dest, vector, scalar, vl);
389+
}
390+
391+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16mf4_f32m1_m(
392+
// CHECK-RV64-NEXT: entry:
393+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.mask.nxv2f32.nxv1f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 1 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]])
394+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
395+
//
396+
vfloat32m1_t test_vfwredusum_vs_f16mf4_f32m1_m (vbool64_t mask, vfloat32m1_t dest, vfloat16mf4_t vector, vfloat32m1_t scalar, size_t vl) {
397+
return vfwredusum_vs_f16mf4_f32m1_m(mask, dest, vector, scalar, vl);
398+
}
399+
400+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16mf2_f32m1_m(
401+
// CHECK-RV64-NEXT: entry:
402+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.mask.nxv2f32.nxv2f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 2 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], <vscale x 2 x i1> [[MASK:%.*]], i64 [[VL:%.*]])
403+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
404+
//
405+
vfloat32m1_t test_vfwredusum_vs_f16mf2_f32m1_m (vbool32_t mask, vfloat32m1_t dest, vfloat16mf2_t vector, vfloat32m1_t scalar, size_t vl) {
406+
return vfwredusum_vs_f16mf2_f32m1_m(mask, dest, vector, scalar, vl);
407+
}
408+
409+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16m1_f32m1_m(
410+
// CHECK-RV64-NEXT: entry:
411+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.mask.nxv2f32.nxv4f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 4 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], <vscale x 4 x i1> [[MASK:%.*]], i64 [[VL:%.*]])
412+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
413+
//
414+
vfloat32m1_t test_vfwredusum_vs_f16m1_f32m1_m (vbool16_t mask, vfloat32m1_t dest, vfloat16m1_t vector, vfloat32m1_t scalar, size_t vl) {
415+
return vfwredusum_vs_f16m1_f32m1_m(mask, dest, vector, scalar, vl);
416+
}
417+
418+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16m2_f32m1_m(
419+
// CHECK-RV64-NEXT: entry:
420+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.mask.nxv2f32.nxv8f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 8 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], <vscale x 8 x i1> [[MASK:%.*]], i64 [[VL:%.*]])
421+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
422+
//
423+
vfloat32m1_t test_vfwredusum_vs_f16m2_f32m1_m (vbool8_t mask, vfloat32m1_t dest, vfloat16m2_t vector, vfloat32m1_t scalar, size_t vl) {
424+
return vfwredusum_vs_f16m2_f32m1_m(mask, dest, vector, scalar, vl);
425+
}
426+
427+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16m4_f32m1_m(
428+
// CHECK-RV64-NEXT: entry:
429+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.mask.nxv2f32.nxv16f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 16 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], <vscale x 16 x i1> [[MASK:%.*]], i64 [[VL:%.*]])
430+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
431+
//
432+
vfloat32m1_t test_vfwredusum_vs_f16m4_f32m1_m (vbool4_t mask, vfloat32m1_t dest, vfloat16m4_t vector, vfloat32m1_t scalar, size_t vl) {
433+
return vfwredusum_vs_f16m4_f32m1_m(mask, dest, vector, scalar, vl);
434+
}
435+
436+
// CHECK-RV64-LABEL: @test_vfwredusum_vs_f16m8_f32m1_m(
437+
// CHECK-RV64-NEXT: entry:
438+
// CHECK-RV64-NEXT: [[TMP0:%.*]] = call <vscale x 2 x float> @llvm.riscv.vfwredusum.mask.nxv2f32.nxv32f16.i64(<vscale x 2 x float> [[DEST:%.*]], <vscale x 32 x half> [[VECTOR:%.*]], <vscale x 2 x float> [[SCALAR:%.*]], <vscale x 32 x i1> [[MASK:%.*]], i64 [[VL:%.*]])
439+
// CHECK-RV64-NEXT: ret <vscale x 2 x float> [[TMP0]]
440+
//
441+
vfloat32m1_t test_vfwredusum_vs_f16m8_f32m1_m (vbool2_t mask, vfloat32m1_t dest, vfloat16m8_t vector, vfloat32m1_t scalar, size_t vl) {
442+
return vfwredusum_vs_f16m8_f32m1_m(mask, dest, vector, scalar, vl);
443+
}

0 commit comments

Comments
 (0)