@@ -377,6 +377,144 @@ define void @maximum() {
377
377
ret void
378
378
}
379
379
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
+
380
518
declare i8 @llvm.umin.i8 (i8 , i8 )
381
519
declare i16 @llvm.umin.i16 (i16 , i16 )
382
520
declare i32 @llvm.umin.i32 (i32 , i32 )
0 commit comments