@@ -377,6 +377,144 @@ define void @maximum() {
377377 ret void
378378}
379379
380+ define void @minimumnum () {
381+ ; CHECK-LABEL: 'minimumnum'
382+ ; CHECK-NEXT: Cost Model: Found costs of 3 for: %1 = call float @llvm.minimumnum.f32(float poison, float poison)
383+ ; CHECK-NEXT: Cost Model: Found costs of 3 for: %2 = call double @llvm.minimumnum.f64(double poison, double poison)
384+ ; CHECK-NEXT: Cost Model: Found costs of 3 for: %3 = call <2 x float> @llvm.minimumnum.v2f32(<2 x float> poison, <2 x float> poison)
385+ ; CHECK-NEXT: Cost Model: Found costs of 3 for: %4 = call <4 x float> @llvm.minimumnum.v4f32(<4 x float> poison, <4 x float> poison)
386+ ; CHECK-NEXT: Cost Model: Found costs of 10 for: %5 = call <8 x float> @llvm.minimumnum.v8f32(<8 x float> poison, <8 x float> poison)
387+ ; CHECK-NEXT: Cost Model: Found costs of 20 for: %6 = call <16 x float> @llvm.minimumnum.v16f32(<16 x float> poison, <16 x float> poison)
388+ ; CHECK-NEXT: Cost Model: Found costs of 3 for: %7 = call <2 x double> @llvm.minimumnum.v2f64(<2 x double> poison, <2 x double> poison)
389+ ; CHECK-NEXT: Cost Model: Found costs of 10 for: %8 = call <4 x double> @llvm.minimumnum.v4f64(<4 x double> poison, <4 x double> poison)
390+ ; CHECK-NEXT: Cost Model: Found costs of 20 for: %9 = call <8 x double> @llvm.minimumnum.v8f64(<8 x double> poison, <8 x double> poison)
391+ ; CHECK-NEXT: Cost Model: Found costs of 40 for: %10 = call <16 x double> @llvm.minimumnum.v16f64(<16 x double> poison, <16 x double> poison)
392+ ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
393+ ;
394+ call float @llvm.minimumnum.f32 (float poison, float poison)
395+ call double @llvm.minimumnum.f64 (double poison, double poison)
396+ call <2 x float > @llvm.minimumnum.v2f32 (<2 x float > poison, <2 x float > poison)
397+ call <4 x float > @llvm.minimumnum.v4f32 (<4 x float > poison, <4 x float > poison)
398+ call <8 x float > @llvm.minimumnum.v8f32 (<8 x float > poison, <8 x float > poison)
399+ call <16 x float > @llvm.minimumnum.v16f32 (<16 x float > poison, <16 x float > poison)
400+ call <2 x double > @llvm.minimumnum.v2f64 (<2 x double > poison, <2 x double > poison)
401+ call <4 x double > @llvm.minimumnum.v4f64 (<4 x double > poison, <4 x double > poison)
402+ call <8 x double > @llvm.minimumnum.v8f64 (<8 x double > poison, <8 x double > poison)
403+ call <16 x double > @llvm.minimumnum.v16f64 (<16 x double > poison, <16 x double > poison)
404+ ret void
405+ }
406+
407+ define void @minimumnum_fp16 () {
408+ ; CHECK-NOF16-LABEL: 'minimumnum_fp16'
409+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of 1 for: %1 = call half @llvm.minimumnum.f16(half poison, half poison)
410+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of RThru:4 CodeSize:3 Lat:4 SizeLat:4 for: %2 = call <2 x half> @llvm.minimumnum.v2f16(<2 x half> poison, <2 x half> poison)
411+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of RThru:10 CodeSize:7 Lat:10 SizeLat:10 for: %3 = call <4 x half> @llvm.minimumnum.v4f16(<4 x half> poison, <4 x half> poison)
412+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of RThru:22 CodeSize:15 Lat:22 SizeLat:22 for: %4 = call <8 x half> @llvm.minimumnum.v8f16(<8 x half> poison, <8 x half> poison)
413+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of RThru:44 CodeSize:30 Lat:44 SizeLat:44 for: %5 = call <16 x half> @llvm.minimumnum.v16f16(<16 x half> poison, <16 x half> poison)
414+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
415+ ;
416+ ; CHECK-F16-LABEL: 'minimumnum_fp16'
417+ ; CHECK-F16-NEXT: Cost Model: Found costs of 3 for: %1 = call half @llvm.minimumnum.f16(half poison, half poison)
418+ ; CHECK-F16-NEXT: Cost Model: Found costs of 3 for: %2 = call <2 x half> @llvm.minimumnum.v2f16(<2 x half> poison, <2 x half> poison)
419+ ; CHECK-F16-NEXT: Cost Model: Found costs of 3 for: %3 = call <4 x half> @llvm.minimumnum.v4f16(<4 x half> poison, <4 x half> poison)
420+ ; CHECK-F16-NEXT: Cost Model: Found costs of 3 for: %4 = call <8 x half> @llvm.minimumnum.v8f16(<8 x half> poison, <8 x half> poison)
421+ ; CHECK-F16-NEXT: Cost Model: Found costs of 10 for: %5 = call <16 x half> @llvm.minimumnum.v16f16(<16 x half> poison, <16 x half> poison)
422+ ; CHECK-F16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
423+ ;
424+ call half @llvm.minimumnum.f32 (half poison, half poison)
425+ call <2 x half > @llvm.minimumnum.v2f16 (<2 x half > poison, <2 x half > poison)
426+ call <4 x half > @llvm.minimumnum.v4f16 (<4 x half > poison, <4 x half > poison)
427+ call <8 x half > @llvm.minimumnum.v8f16 (<8 x half > poison, <8 x half > poison)
428+ call <16 x half > @llvm.minimumnum.v16f16 (<16 x half > poison, <16 x half > poison)
429+ ret void
430+ }
431+
432+ define void @minimumnum_bf16 () {
433+ ; CHECK-LABEL: 'minimumnum_bf16'
434+ ; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call bfloat @llvm.minimumnum.bf16(bfloat poison, bfloat poison)
435+ ; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:3 Lat:4 SizeLat:4 for: %2 = call <2 x bfloat> @llvm.minimumnum.v2bf16(<2 x bfloat> poison, <2 x bfloat> poison)
436+ ; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:7 Lat:10 SizeLat:10 for: %3 = call <4 x bfloat> @llvm.minimumnum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
437+ ; CHECK-NEXT: Cost Model: Found costs of RThru:22 CodeSize:15 Lat:22 SizeLat:22 for: %4 = call <8 x bfloat> @llvm.minimumnum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
438+ ; CHECK-NEXT: Cost Model: Found costs of RThru:44 CodeSize:30 Lat:44 SizeLat:44 for: %5 = call <16 x bfloat> @llvm.minimumnum.v16bf16(<16 x bfloat> poison, <16 x bfloat> poison)
439+ ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
440+ ;
441+ call bfloat @llvm.minimumnum.f32 (bfloat poison, bfloat poison)
442+ call <2 x bfloat> @llvm.minimumnum.v2fb16 (<2 x bfloat> poison, <2 x bfloat> poison)
443+ call <4 x bfloat> @llvm.minimumnum.v4bf16 (<4 x bfloat> poison, <4 x bfloat> poison)
444+ call <8 x bfloat> @llvm.minimumnum.v8bf16 (<8 x bfloat> poison, <8 x bfloat> poison)
445+ call <16 x bfloat> @llvm.minimumnum.v6bf16 (<16 x bfloat> poison, <16 x bfloat> poison)
446+ ret void
447+ }
448+
449+ define void @maximumnum () {
450+ ; CHECK-LABEL: 'maximumnum'
451+ ; CHECK-NEXT: Cost Model: Found costs of 3 for: %1 = call float @llvm.maximumnum.f32(float poison, float poison)
452+ ; CHECK-NEXT: Cost Model: Found costs of 3 for: %2 = call double @llvm.maximumnum.f64(double poison, double poison)
453+ ; CHECK-NEXT: Cost Model: Found costs of 3 for: %3 = call <2 x float> @llvm.maximumnum.v2f32(<2 x float> poison, <2 x float> poison)
454+ ; CHECK-NEXT: Cost Model: Found costs of 3 for: %4 = call <4 x float> @llvm.maximumnum.v4f32(<4 x float> poison, <4 x float> poison)
455+ ; CHECK-NEXT: Cost Model: Found costs of 10 for: %5 = call <8 x float> @llvm.maximumnum.v8f32(<8 x float> poison, <8 x float> poison)
456+ ; CHECK-NEXT: Cost Model: Found costs of 20 for: %6 = call <16 x float> @llvm.maximumnum.v16f32(<16 x float> poison, <16 x float> poison)
457+ ; CHECK-NEXT: Cost Model: Found costs of 3 for: %7 = call <2 x double> @llvm.maximumnum.v2f64(<2 x double> poison, <2 x double> poison)
458+ ; CHECK-NEXT: Cost Model: Found costs of 10 for: %8 = call <4 x double> @llvm.maximumnum.v4f64(<4 x double> poison, <4 x double> poison)
459+ ; CHECK-NEXT: Cost Model: Found costs of 20 for: %9 = call <8 x double> @llvm.maximumnum.v8f64(<8 x double> poison, <8 x double> poison)
460+ ; CHECK-NEXT: Cost Model: Found costs of 40 for: %10 = call <16 x double> @llvm.maximumnum.v16f64(<16 x double> poison, <16 x double> poison)
461+ ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
462+ ;
463+ call float @llvm.maximumnum.f32 (float poison, float poison)
464+ call double @llvm.maximumnum.f64 (double poison, double poison)
465+ call <2 x float > @llvm.maximumnum.v2f32 (<2 x float > poison, <2 x float > poison)
466+ call <4 x float > @llvm.maximumnum.v4f32 (<4 x float > poison, <4 x float > poison)
467+ call <8 x float > @llvm.maximumnum.v8f32 (<8 x float > poison, <8 x float > poison)
468+ call <16 x float > @llvm.maximumnum.v16f32 (<16 x float > poison, <16 x float > poison)
469+ call <2 x double > @llvm.maximumnum.v2f64 (<2 x double > poison, <2 x double > poison)
470+ call <4 x double > @llvm.maximumnum.v4f64 (<4 x double > poison, <4 x double > poison)
471+ call <8 x double > @llvm.maximumnum.v8f64 (<8 x double > poison, <8 x double > poison)
472+ call <16 x double > @llvm.maximumnum.v16f64 (<16 x double > poison, <16 x double > poison)
473+ ret void
474+ }
475+
476+ define void @maximumnum_fp16 () {
477+ ; CHECK-NOF16-LABEL: 'maximumnum_fp16'
478+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of 1 for: %1 = call half @llvm.maximumnum.f16(half poison, half poison)
479+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of RThru:4 CodeSize:3 Lat:4 SizeLat:4 for: %2 = call <2 x half> @llvm.maximumnum.v2f16(<2 x half> poison, <2 x half> poison)
480+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of RThru:10 CodeSize:7 Lat:10 SizeLat:10 for: %3 = call <4 x half> @llvm.maximumnum.v4f16(<4 x half> poison, <4 x half> poison)
481+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of RThru:22 CodeSize:15 Lat:22 SizeLat:22 for: %4 = call <8 x half> @llvm.maximumnum.v8f16(<8 x half> poison, <8 x half> poison)
482+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of RThru:44 CodeSize:30 Lat:44 SizeLat:44 for: %5 = call <16 x half> @llvm.maximumnum.v16f16(<16 x half> poison, <16 x half> poison)
483+ ; CHECK-NOF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
484+ ;
485+ ; CHECK-F16-LABEL: 'maximumnum_fp16'
486+ ; CHECK-F16-NEXT: Cost Model: Found costs of 3 for: %1 = call half @llvm.maximumnum.f16(half poison, half poison)
487+ ; CHECK-F16-NEXT: Cost Model: Found costs of 3 for: %2 = call <2 x half> @llvm.maximumnum.v2f16(<2 x half> poison, <2 x half> poison)
488+ ; CHECK-F16-NEXT: Cost Model: Found costs of 3 for: %3 = call <4 x half> @llvm.maximumnum.v4f16(<4 x half> poison, <4 x half> poison)
489+ ; CHECK-F16-NEXT: Cost Model: Found costs of 3 for: %4 = call <8 x half> @llvm.maximumnum.v8f16(<8 x half> poison, <8 x half> poison)
490+ ; CHECK-F16-NEXT: Cost Model: Found costs of 10 for: %5 = call <16 x half> @llvm.maximumnum.v16f16(<16 x half> poison, <16 x half> poison)
491+ ; CHECK-F16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
492+ ;
493+ call half @llvm.maximumnum.f32 (half poison, half poison)
494+ call <2 x half > @llvm.maximumnum.v2f16 (<2 x half > poison, <2 x half > poison)
495+ call <4 x half > @llvm.maximumnum.v4f16 (<4 x half > poison, <4 x half > poison)
496+ call <8 x half > @llvm.maximumnum.v8f16 (<8 x half > poison, <8 x half > poison)
497+ call <16 x half > @llvm.maximumnum.v16f16 (<16 x half > poison, <16 x half > poison)
498+ ret void
499+ }
500+
501+ define void @maximumnum_bf16 () {
502+ ; CHECK-LABEL: 'maximumnum_bf16'
503+ ; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call bfloat @llvm.maximumnum.bf16(bfloat poison, bfloat poison)
504+ ; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:3 Lat:4 SizeLat:4 for: %2 = call <2 x bfloat> @llvm.maximumnum.v2bf16(<2 x bfloat> poison, <2 x bfloat> poison)
505+ ; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:7 Lat:10 SizeLat:10 for: %3 = call <4 x bfloat> @llvm.maximumnum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
506+ ; CHECK-NEXT: Cost Model: Found costs of RThru:22 CodeSize:15 Lat:22 SizeLat:22 for: %4 = call <8 x bfloat> @llvm.maximumnum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
507+ ; CHECK-NEXT: Cost Model: Found costs of RThru:44 CodeSize:30 Lat:44 SizeLat:44 for: %5 = call <16 x bfloat> @llvm.maximumnum.v16bf16(<16 x bfloat> poison, <16 x bfloat> poison)
508+ ; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
509+ ;
510+ call bfloat @llvm.maximumnum.f32 (bfloat poison, bfloat poison)
511+ call <2 x bfloat> @llvm.maximumnum.v2fb16 (<2 x bfloat> poison, <2 x bfloat> poison)
512+ call <4 x bfloat> @llvm.maximumnum.v4bf16 (<4 x bfloat> poison, <4 x bfloat> poison)
513+ call <8 x bfloat> @llvm.maximumnum.v8bf16 (<8 x bfloat> poison, <8 x bfloat> poison)
514+ call <16 x bfloat> @llvm.maximumnum.v6bf16 (<16 x bfloat> poison, <16 x bfloat> poison)
515+ ret void
516+ }
517+
380518declare i8 @llvm.umin.i8 (i8 , i8 )
381519declare i16 @llvm.umin.i16 (i16 , i16 )
382520declare i32 @llvm.umin.i32 (i32 , i32 )
0 commit comments