[llvm] 2904012 - [AArch64] Add bf16 min/max test coverage. NFC (#219123)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 26 23:07:42 PDT 2026
Author: David Green
Date: 2026-08-27T07:07:38+01:00
New Revision: 2904012002c8f4c1a628f104e2c58754006fba56
URL: https://github.com/llvm/llvm-project/commit/2904012002c8f4c1a628f104e2c58754006fba56
DIFF: https://github.com/llvm/llvm-project/commit/2904012002c8f4c1a628f104e2c58754006fba56.diff
LOG: [AArch64] Add bf16 min/max test coverage. NFC (#219123)
Added:
llvm/test/Analysis/CostModel/AArch64/fminmax-bf16.ll
Modified:
llvm/test/Analysis/CostModel/AArch64/fminmax.ll
Removed:
################################################################################
diff --git a/llvm/test/Analysis/CostModel/AArch64/fminmax-bf16.ll b/llvm/test/Analysis/CostModel/AArch64/fminmax-bf16.ll
new file mode 100644
index 0000000000000..dfe91750de4c0
--- /dev/null
+++ b/llvm/test/Analysis/CostModel/AArch64/fminmax-bf16.ll
@@ -0,0 +1,110 @@
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mtriple=aarch64 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-NOBF16
+; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mtriple=aarch64 -mattr=+bf16 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-BF16
+
+target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
+
+define void @minnum_bf16() {
+; CHECK-LABEL: 'minnum_bf16'
+; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call bfloat @llvm.minnum.bf16(bfloat poison, bfloat poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:3 Lat:4 SizeLat:4 for: %2 = call <2 x bfloat> @llvm.minnum.v2bf16(<2 x bfloat> poison, <2 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:7 Lat:10 SizeLat:10 for: %3 = call <4 x bfloat> @llvm.minnum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:22 CodeSize:15 Lat:22 SizeLat:22 for: %4 = call <8 x bfloat> @llvm.minnum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:44 CodeSize:30 Lat:44 SizeLat:44 for: %5 = call <16 x bfloat> @llvm.minnum.v16bf16(<16 x bfloat> poison, <16 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ call bfloat @llvm.minnum.f32(bfloat poison, bfloat poison)
+ call <2 x bfloat> @llvm.minnum.v2fb16(<2 x bfloat> poison, <2 x bfloat> poison)
+ call <4 x bfloat> @llvm.minnum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
+ call <8 x bfloat> @llvm.minnum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
+ call <16 x bfloat> @llvm.minnum.v6bf16(<16 x bfloat> poison, <16 x bfloat> poison)
+ ret void
+}
+
+define void @maxnum_bf16() {
+; CHECK-LABEL: 'maxnum_bf16'
+; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call bfloat @llvm.maxnum.bf16(bfloat poison, bfloat poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:3 Lat:4 SizeLat:4 for: %2 = call <2 x bfloat> @llvm.maxnum.v2bf16(<2 x bfloat> poison, <2 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:7 Lat:10 SizeLat:10 for: %3 = call <4 x bfloat> @llvm.maxnum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:22 CodeSize:15 Lat:22 SizeLat:22 for: %4 = call <8 x bfloat> @llvm.maxnum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:44 CodeSize:30 Lat:44 SizeLat:44 for: %5 = call <16 x bfloat> @llvm.maxnum.v16bf16(<16 x bfloat> poison, <16 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ call bfloat @llvm.maxnum.f32(bfloat poison, bfloat poison)
+ call <2 x bfloat> @llvm.maxnum.v2fb16(<2 x bfloat> poison, <2 x bfloat> poison)
+ call <4 x bfloat> @llvm.maxnum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
+ call <8 x bfloat> @llvm.maxnum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
+ call <16 x bfloat> @llvm.maxnum.v6bf16(<16 x bfloat> poison, <16 x bfloat> poison)
+ ret void
+}
+
+define void @minimum_bf16() {
+; CHECK-LABEL: 'minimum_bf16'
+; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call bfloat @llvm.minimum.bf16(bfloat poison, bfloat poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:3 Lat:4 SizeLat:4 for: %2 = call <2 x bfloat> @llvm.minimum.v2bf16(<2 x bfloat> poison, <2 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:7 Lat:10 SizeLat:10 for: %3 = call <4 x bfloat> @llvm.minimum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:22 CodeSize:15 Lat:22 SizeLat:22 for: %4 = call <8 x bfloat> @llvm.minimum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:44 CodeSize:30 Lat:44 SizeLat:44 for: %5 = call <16 x bfloat> @llvm.minimum.v16bf16(<16 x bfloat> poison, <16 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ call bfloat @llvm.minimum.f32(bfloat poison, bfloat poison)
+ call <2 x bfloat> @llvm.minimum.v2fb16(<2 x bfloat> poison, <2 x bfloat> poison)
+ call <4 x bfloat> @llvm.minimum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
+ call <8 x bfloat> @llvm.minimum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
+ call <16 x bfloat> @llvm.minimum.v6bf16(<16 x bfloat> poison, <16 x bfloat> poison)
+ ret void
+}
+
+define void @maximum_bf16() {
+; CHECK-LABEL: 'maximum_bf16'
+; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call bfloat @llvm.maximum.bf16(bfloat poison, bfloat poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:4 CodeSize:3 Lat:4 SizeLat:4 for: %2 = call <2 x bfloat> @llvm.maximum.v2bf16(<2 x bfloat> poison, <2 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:7 Lat:10 SizeLat:10 for: %3 = call <4 x bfloat> @llvm.maximum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:22 CodeSize:15 Lat:22 SizeLat:22 for: %4 = call <8 x bfloat> @llvm.maximum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:44 CodeSize:30 Lat:44 SizeLat:44 for: %5 = call <16 x bfloat> @llvm.maximum.v16bf16(<16 x bfloat> poison, <16 x bfloat> poison)
+; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ call bfloat @llvm.maximum.f32(bfloat poison, bfloat poison)
+ call <2 x bfloat> @llvm.maximum.v2fb16(<2 x bfloat> poison, <2 x bfloat> poison)
+ call <4 x bfloat> @llvm.maximum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
+ call <8 x bfloat> @llvm.maximum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
+ call <16 x bfloat> @llvm.maximum.v6bf16(<16 x bfloat> poison, <16 x bfloat> poison)
+ ret void
+}
+
+define void @minimumnum_bf16() {
+; CHECK-LABEL: 'minimumnum_bf16'
+; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call bfloat @llvm.minimumnum.bf16(bfloat poison, bfloat poison)
+; 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)
+; 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)
+; 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)
+; 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)
+; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ call bfloat @llvm.minimumnum.f32(bfloat poison, bfloat poison)
+ call <2 x bfloat> @llvm.minimumnum.v2fb16(<2 x bfloat> poison, <2 x bfloat> poison)
+ call <4 x bfloat> @llvm.minimumnum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
+ call <8 x bfloat> @llvm.minimumnum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
+ call <16 x bfloat> @llvm.minimumnum.v6bf16(<16 x bfloat> poison, <16 x bfloat> poison)
+ ret void
+}
+
+define void @maximumnum_bf16() {
+; CHECK-LABEL: 'maximumnum_bf16'
+; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call bfloat @llvm.maximumnum.bf16(bfloat poison, bfloat poison)
+; 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)
+; 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)
+; 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)
+; 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)
+; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ call bfloat @llvm.maximumnum.f32(bfloat poison, bfloat poison)
+ call <2 x bfloat> @llvm.maximumnum.v2fb16(<2 x bfloat> poison, <2 x bfloat> poison)
+ call <4 x bfloat> @llvm.maximumnum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
+ call <8 x bfloat> @llvm.maximumnum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
+ call <16 x bfloat> @llvm.maximumnum.v6bf16(<16 x bfloat> poison, <16 x bfloat> poison)
+ ret void
+}
+;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+; CHECK-BF16: {{.*}}
+; CHECK-NOBF16: {{.*}}
diff --git a/llvm/test/Analysis/CostModel/AArch64/fminmax.ll b/llvm/test/Analysis/CostModel/AArch64/fminmax.ll
index a223d0ff5e57a..64e9ef755f973 100644
--- a/llvm/test/Analysis/CostModel/AArch64/fminmax.ll
+++ b/llvm/test/Analysis/CostModel/AArch64/fminmax.ll
@@ -241,23 +241,6 @@ define void @minimumnum_fp16() {
ret void
}
-define void @minimumnum_bf16() {
-; CHECK-LABEL: 'minimumnum_bf16'
-; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call bfloat @llvm.minimumnum.bf16(bfloat poison, bfloat poison)
-; 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)
-; 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)
-; 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)
-; 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)
-; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
-;
- call bfloat @llvm.minimumnum.f32(bfloat poison, bfloat poison)
- call <2 x bfloat> @llvm.minimumnum.v2fb16(<2 x bfloat> poison, <2 x bfloat> poison)
- call <4 x bfloat> @llvm.minimumnum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
- call <8 x bfloat> @llvm.minimumnum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
- call <16 x bfloat> @llvm.minimumnum.v6bf16(<16 x bfloat> poison, <16 x bfloat> poison)
- ret void
-}
-
define void @maximumnum() {
; CHECK-LABEL: 'maximumnum'
; CHECK-NEXT: Cost Model: Found costs of 3 for: %1 = call float @llvm.maximumnum.f32(float poison, float poison)
@@ -309,20 +292,3 @@ define void @maximumnum_fp16() {
call <16 x half> @llvm.maximumnum.v16f16(<16 x half> poison, <16 x half> poison)
ret void
}
-
-define void @maximumnum_bf16() {
-; CHECK-LABEL: 'maximumnum_bf16'
-; CHECK-NEXT: Cost Model: Found costs of 1 for: %1 = call bfloat @llvm.maximumnum.bf16(bfloat poison, bfloat poison)
-; 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)
-; 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)
-; 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)
-; 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)
-; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
-;
- call bfloat @llvm.maximumnum.f32(bfloat poison, bfloat poison)
- call <2 x bfloat> @llvm.maximumnum.v2fb16(<2 x bfloat> poison, <2 x bfloat> poison)
- call <4 x bfloat> @llvm.maximumnum.v4bf16(<4 x bfloat> poison, <4 x bfloat> poison)
- call <8 x bfloat> @llvm.maximumnum.v8bf16(<8 x bfloat> poison, <8 x bfloat> poison)
- call <16 x bfloat> @llvm.maximumnum.v6bf16(<16 x bfloat> poison, <16 x bfloat> poison)
- ret void
-}
More information about the llvm-commits
mailing list