[llvm] [AArch64] Add fixed-length bfloat cost model tests (NFC) (PR #184805)
Benjamin Maxwell via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 5 06:49:59 PST 2026
https://github.com/MacDue created https://github.com/llvm/llvm-project/pull/184805
These tests are derived from the existing `arith-fp.ll` tests.
>From e56623999499fb2507bf00b001f776bf0e161c70 Mon Sep 17 00:00:00 2001
From: Benjamin Maxwell <benjamin.maxwell at arm.com>
Date: Thu, 5 Mar 2026 14:44:51 +0000
Subject: [PATCH] [AArch64] Add fixed-length bfloat cost model tests (NFC)
These tests are derived from the existing `arith-fp.ll` tests.
---
.../Analysis/CostModel/AArch64/arith-bf16.ll | 402 ++++++++++++++++++
1 file changed, 402 insertions(+)
create mode 100644 llvm/test/Analysis/CostModel/AArch64/arith-bf16.ll
diff --git a/llvm/test/Analysis/CostModel/AArch64/arith-bf16.ll b/llvm/test/Analysis/CostModel/AArch64/arith-bf16.ll
new file mode 100644
index 0000000000000..d5d9506a4889d
--- /dev/null
+++ b/llvm/test/Analysis/CostModel/AArch64/arith-bf16.ll
@@ -0,0 +1,402 @@
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
+; RUN: opt < %s -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output -mtriple=aarch64 -mattr=+sve | FileCheck %s --check-prefixes=CHECK,CHECK-BASE
+; RUN: opt < %s -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output -mtriple=aarch64 -mattr=+bf16,+sve | FileCheck %s --check-prefixes=CHECK,CHECK-BF16
+; RUN: opt < %s -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output -mtriple=aarch64 -mattr=+bf16,+sve-b16b16,+sve | FileCheck %s --check-prefixes=CHECK,CHECK-SVE-B16B16
+
+target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
+
+define void @fadd_bf16() {
+; CHECK-BASE-LABEL: 'fadd_bf16'
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:11 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fadd bfloat undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:11 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fadd <4 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:21 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fadd <8 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:42 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fadd <16 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-BF16-LABEL: 'fadd_bf16'
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fadd bfloat undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fadd <4 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fadd <8 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:16 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fadd <16 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-SVE-B16B16-LABEL: 'fadd_bf16'
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fadd bfloat undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fadd <4 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fadd <8 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:16 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fadd <16 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = fadd bfloat undef, undef
+ %V4BF16 = fadd <4 x bfloat> undef, undef
+ %V8BF16 = fadd <8 x bfloat> undef, undef
+ %V16BF16 = fadd <16 x bfloat> undef, undef
+ ret void
+}
+
+define void @fsub_bf16() {
+; CHECK-BASE-LABEL: 'fsub_bf16'
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:11 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fsub bfloat undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:11 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fsub <4 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:21 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fsub <8 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:42 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fsub <16 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-BF16-LABEL: 'fsub_bf16'
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fsub bfloat undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fsub <4 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fsub <8 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:16 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fsub <16 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-SVE-B16B16-LABEL: 'fsub_bf16'
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fsub bfloat undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:4 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fsub <4 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:8 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fsub <8 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:16 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fsub <16 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = fsub bfloat undef, undef
+ %V4BF16 = fsub <4 x bfloat> undef, undef
+ %V8BF16 = fsub <8 x bfloat> undef, undef
+ %V16BF16 = fsub <16 x bfloat> undef, undef
+ ret void
+}
+
+define void @fneg_idiom_bf16() {
+; CHECK-BASE-LABEL: 'fneg_idiom_bf16'
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fsub bfloat 0xR8000, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fsub <4 x bfloat> splat (bfloat 0xR8000), undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:19 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fsub <8 x bfloat> splat (bfloat 0xR8000), undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-BF16-LABEL: 'fneg_idiom_bf16'
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fsub bfloat 0xR8000, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fsub <4 x bfloat> splat (bfloat 0xR8000), undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fsub <8 x bfloat> splat (bfloat 0xR8000), undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-SVE-B16B16-LABEL: 'fneg_idiom_bf16'
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fsub bfloat 0xR8000, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:3 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fsub <4 x bfloat> splat (bfloat 0xR8000), undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:6 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fsub <8 x bfloat> splat (bfloat 0xR8000), undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = fsub bfloat -0.0, undef
+ %V4BF16 = fsub <4 x bfloat> <bfloat -0.0, bfloat -0.0, bfloat -0.0, bfloat -0.0>, undef
+ %V8BF16 = fsub <8 x bfloat> <bfloat -0.0, bfloat -0.0, bfloat -0.0, bfloat -0.0, bfloat -0.0, bfloat -0.0, bfloat -0.0, bfloat -0.0>, undef
+ ret void
+}
+
+define void @fneg_bf16() {
+; CHECK-LABEL: 'fneg_bf16'
+; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fneg bfloat undef
+; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16 = fneg <2 x bfloat> undef
+; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fneg <4 x bfloat> undef
+; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fneg <8 x bfloat> undef
+; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fneg <16 x bfloat> undef
+; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = fneg bfloat undef
+ %V2BF16 = fneg <2 x bfloat> undef
+ %V4BF16 = fneg <4 x bfloat> undef
+ %V8BF16 = fneg <8 x bfloat> undef
+ %V16BF16 = fneg <16 x bfloat> undef
+ ret void
+}
+
+define void @fmulneg_bf16() {
+; CHECK-BASE-LABEL: 'fmulneg_bf16'
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fneg bfloat undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %BF16M = fmul bfloat %BF16, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16 = fneg <2 x bfloat> undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16M = fmul <2 x bfloat> %V2BF16, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fneg <4 x bfloat> undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16M = fmul <4 x bfloat> %V4BF16, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fneg <8 x bfloat> undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:23 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16M = fmul <8 x bfloat> %V8BF16, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fneg <16 x bfloat> undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:46 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16M = fmul <16 x bfloat> %V16BF16, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-BF16-LABEL: 'fmulneg_bf16'
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fneg bfloat undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %BF16M = fmul bfloat %BF16, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16 = fneg <2 x bfloat> undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16M = fmul <2 x bfloat> %V2BF16, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fneg <4 x bfloat> undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16M = fmul <4 x bfloat> %V4BF16, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fneg <8 x bfloat> undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16M = fmul <8 x bfloat> %V8BF16, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fneg <16 x bfloat> undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:20 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16M = fmul <16 x bfloat> %V16BF16, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-SVE-B16B16-LABEL: 'fmulneg_bf16'
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fneg bfloat undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %BF16M = fmul bfloat %BF16, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16 = fneg <2 x bfloat> undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16M = fmul <2 x bfloat> %V2BF16, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fneg <4 x bfloat> undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16M = fmul <4 x bfloat> %V4BF16, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fneg <8 x bfloat> undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16M = fmul <8 x bfloat> %V8BF16, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fneg <16 x bfloat> undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:20 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16M = fmul <16 x bfloat> %V16BF16, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = fneg bfloat undef
+ %BF16M = fmul bfloat %BF16, undef
+ %V2BF16 = fneg <2 x bfloat> undef
+ %V2BF16M = fmul <2 x bfloat> %V2BF16, undef
+ %V4BF16 = fneg <4 x bfloat> undef
+ %V4BF16M = fmul <4 x bfloat> %V4BF16, undef
+ %V8BF16 = fneg <8 x bfloat> undef
+ %V8BF16M = fmul <8 x bfloat> %V8BF16, undef
+ %V16BF16 = fneg <16 x bfloat> undef
+ %V16BF16M = fmul <16 x bfloat> %V16BF16, undef
+ ret void
+}
+
+define void @fnegfmul_bf16() {
+; CHECK-BASE-LABEL: 'fnegfmul_bf16'
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %BF16M = fmul bfloat undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fneg bfloat %BF16M
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16M = fmul <2 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16 = fneg <2 x bfloat> %V2BF16M
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16M = fmul <4 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fneg <4 x bfloat> %V4BF16M
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:23 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16M = fmul <8 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fneg <8 x bfloat> %V8BF16M
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:46 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16M = fmul <16 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fneg <16 x bfloat> %V16BF16M
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-BF16-LABEL: 'fnegfmul_bf16'
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %BF16M = fmul bfloat undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fneg bfloat %BF16M
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16M = fmul <2 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16 = fneg <2 x bfloat> %V2BF16M
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16M = fmul <4 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fneg <4 x bfloat> %V4BF16M
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16M = fmul <8 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fneg <8 x bfloat> %V8BF16M
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:20 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16M = fmul <16 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fneg <16 x bfloat> %V16BF16M
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-SVE-B16B16-LABEL: 'fnegfmul_bf16'
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %BF16M = fmul bfloat undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fneg bfloat %BF16M
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16M = fmul <2 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V2BF16 = fneg <2 x bfloat> %V2BF16M
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16M = fmul <4 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fneg <4 x bfloat> %V4BF16M
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16M = fmul <8 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fneg <8 x bfloat> %V8BF16M
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:20 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16M = fmul <16 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fneg <16 x bfloat> %V16BF16M
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16M = fmul bfloat undef, undef
+ %BF16 = fneg bfloat %BF16M
+ %V2BF16M = fmul <2 x bfloat> undef, undef
+ %V2BF16 = fneg <2 x bfloat> %V2BF16M
+ %V4BF16M = fmul <4 x bfloat> undef, undef
+ %V4BF16 = fneg <4 x bfloat> %V4BF16M
+ %V8BF16M = fmul <8 x bfloat> undef, undef
+ %V8BF16 = fneg <8 x bfloat> %V8BF16M
+ %V16BF16M = fmul <16 x bfloat> undef, undef
+ %V16BF16 = fneg <16 x bfloat> %V16BF16M
+ ret void
+}
+
+define void @fmul_bf16() {
+; CHECK-BASE-LABEL: 'fmul_bf16'
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fmul bfloat undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fmul <4 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:23 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fmul <8 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:46 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fmul <16 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-BF16-LABEL: 'fmul_bf16'
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fmul bfloat undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fmul <4 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fmul <8 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:20 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fmul <16 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-SVE-B16B16-LABEL: 'fmul_bf16'
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %BF16 = fmul bfloat undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:1 Lat:3 SizeLat:1 for: %V4BF16 = fmul <4 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:10 CodeSize:1 Lat:3 SizeLat:1 for: %V8BF16 = fmul <8 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:20 CodeSize:1 Lat:3 SizeLat:1 for: %V16BF16 = fmul <16 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = fmul bfloat undef, undef
+ %V4BF16 = fmul <4 x bfloat> undef, undef
+ %V8BF16 = fmul <8 x bfloat> undef, undef
+ %V16BF16 = fmul <16 x bfloat> undef, undef
+ ret void
+}
+
+define void @fdiv_bf16() {
+; CHECK-BASE-LABEL: 'fdiv_bf16'
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:12 CodeSize:4 Lat:4 SizeLat:4 for: %BF16 = fdiv bfloat undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:12 CodeSize:4 Lat:4 SizeLat:4 for: %V4BF16 = fdiv <4 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:23 CodeSize:4 Lat:4 SizeLat:4 for: %V8BF16 = fdiv <8 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:46 CodeSize:4 Lat:4 SizeLat:4 for: %V16BF16 = fdiv <16 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-BF16-LABEL: 'fdiv_bf16'
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:4 Lat:4 SizeLat:4 for: %BF16 = fdiv bfloat undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:4 Lat:4 SizeLat:4 for: %V4BF16 = fdiv <4 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:10 CodeSize:4 Lat:4 SizeLat:4 for: %V8BF16 = fdiv <8 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:20 CodeSize:4 Lat:4 SizeLat:4 for: %V16BF16 = fdiv <16 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-SVE-B16B16-LABEL: 'fdiv_bf16'
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:4 Lat:4 SizeLat:4 for: %BF16 = fdiv bfloat undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:5 CodeSize:4 Lat:4 SizeLat:4 for: %V4BF16 = fdiv <4 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:10 CodeSize:4 Lat:4 SizeLat:4 for: %V8BF16 = fdiv <8 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:20 CodeSize:4 Lat:4 SizeLat:4 for: %V16BF16 = fdiv <16 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = fdiv bfloat undef, undef
+ %V4BF16 = fdiv <4 x bfloat> undef, undef
+ %V8BF16 = fdiv <8 x bfloat> undef, undef
+ %V16BF16 = fdiv <16 x bfloat> undef, undef
+ ret void
+}
+
+define void @frem_bf16() {
+; CHECK-BASE-LABEL: 'frem_bf16'
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:20 CodeSize:4 Lat:4 SizeLat:4 for: %BF16 = frem bfloat undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:62 CodeSize:4 Lat:4 SizeLat:4 for: %V4BF16 = frem <4 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:123 CodeSize:4 Lat:4 SizeLat:4 for: %V8BF16 = frem <8 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:246 CodeSize:4 Lat:4 SizeLat:4 for: %V16BF16 = frem <16 x bfloat> undef, undef
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-BF16-LABEL: 'frem_bf16'
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:13 CodeSize:4 Lat:4 SizeLat:4 for: %BF16 = frem bfloat undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:55 CodeSize:4 Lat:4 SizeLat:4 for: %V4BF16 = frem <4 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:110 CodeSize:4 Lat:4 SizeLat:4 for: %V8BF16 = frem <8 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:220 CodeSize:4 Lat:4 SizeLat:4 for: %V16BF16 = frem <16 x bfloat> undef, undef
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-SVE-B16B16-LABEL: 'frem_bf16'
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:13 CodeSize:4 Lat:4 SizeLat:4 for: %BF16 = frem bfloat undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:55 CodeSize:4 Lat:4 SizeLat:4 for: %V4BF16 = frem <4 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:110 CodeSize:4 Lat:4 SizeLat:4 for: %V8BF16 = frem <8 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:220 CodeSize:4 Lat:4 SizeLat:4 for: %V16BF16 = frem <16 x bfloat> undef, undef
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = frem bfloat undef, undef
+ %V4BF16 = frem <4 x bfloat> undef, undef
+ %V8BF16 = frem <8 x bfloat> undef, undef
+ %V16BF16 = frem <16 x bfloat> undef, undef
+ ret void
+}
+
+define void @fsqrt_bf16() {
+; CHECK-LABEL: 'fsqrt_bf16'
+; CHECK-NEXT: Cost Model: Found costs of 1 for: %BF16 = call bfloat @llvm.sqrt.bf16(bfloat undef)
+; CHECK-NEXT: Cost Model: Found costs of RThru:10 CodeSize:7 Lat:10 SizeLat:10 for: %V4BF16 = call <4 x bfloat> @llvm.sqrt.v4bf16(<4 x bfloat> undef)
+; CHECK-NEXT: Cost Model: Found costs of RThru:22 CodeSize:15 Lat:22 SizeLat:22 for: %V8BF16 = call <8 x bfloat> @llvm.sqrt.v8bf16(<8 x bfloat> undef)
+; CHECK-NEXT: Cost Model: Found costs of RThru:44 CodeSize:30 Lat:44 SizeLat:44 for: %V16BF16 = call <16 x bfloat> @llvm.sqrt.v16bf16(<16 x bfloat> undef)
+; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = call bfloat @llvm.sqrt.f16(bfloat undef)
+ %V4BF16 = call <4 x bfloat> @llvm.sqrt.v4f16(<4 x bfloat> undef)
+ %V8BF16 = call <8 x bfloat> @llvm.sqrt.v8f16(<8 x bfloat> undef)
+ %V16BF16 = call <16 x bfloat> @llvm.sqrt.v16f16(<16 x bfloat> undef)
+ ret void
+}
+
+define void @fabs_bf16() {
+; CHECK-LABEL: 'fabs_bf16'
+; CHECK-NEXT: Cost Model: Found costs of 1 for: %BF16 = call bfloat @llvm.fabs.bf16(bfloat undef)
+; CHECK-NEXT: Cost Model: Found costs of 1 for: %V4BF16 = call <4 x bfloat> @llvm.fabs.v4bf16(<4 x bfloat> undef)
+; CHECK-NEXT: Cost Model: Found costs of 1 for: %V8BF16 = call <8 x bfloat> @llvm.fabs.v8bf16(<8 x bfloat> undef)
+; CHECK-NEXT: Cost Model: Found costs of 4 for: %V2BF16 = call <16 x bfloat> @llvm.fabs.v16bf16(<16 x bfloat> undef)
+; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = call bfloat @llvm.fabs.f16(bfloat undef)
+ %V4BF16 = call <4 x bfloat> @llvm.fabs.v4f16(<4 x bfloat> undef)
+ %V8BF16 = call <8 x bfloat> @llvm.fabs.v8f16(<8 x bfloat> undef)
+ %V2BF16 = call <16 x bfloat> @llvm.fabs.v16f16(<16 x bfloat> undef)
+ ret void
+}
+
+define void @fcopysign_bf16() {
+; CHECK-LABEL: 'fcopysign_bf16'
+; CHECK-NEXT: Cost Model: Found costs of 2 for: %BF16 = call bfloat @llvm.copysign.bf16(bfloat undef, bfloat undef)
+; CHECK-NEXT: Cost Model: Found costs of 2 for: %V4BF16 = call <4 x bfloat> @llvm.copysign.v4bf16(<4 x bfloat> undef, <4 x bfloat> undef)
+; CHECK-NEXT: Cost Model: Found costs of 2 for: %V8BF16 = call <8 x bfloat> @llvm.copysign.v8bf16(<8 x bfloat> undef, <8 x bfloat> undef)
+; CHECK-NEXT: Cost Model: Found costs of 4 for: %V16BF16 = call <16 x bfloat> @llvm.copysign.v16bf16(<16 x bfloat> undef, <16 x bfloat> undef)
+; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = call bfloat @llvm.copysign.f16(bfloat undef, bfloat undef)
+ %V4BF16 = call <4 x bfloat> @llvm.copysign.v4f16(<4 x bfloat> undef, <4 x bfloat> undef)
+ %V8BF16 = call <8 x bfloat> @llvm.copysign.v8f16(<8 x bfloat> undef, <8 x bfloat> undef)
+ %V16BF16 = call <16 x bfloat> @llvm.copysign.v16f16(<16 x bfloat> undef, <16 x bfloat> undef)
+ ret void
+}
+
+define void @fma_bf16() {
+; CHECK-BASE-LABEL: 'fma_bf16'
+; CHECK-BASE-NEXT: Cost Model: Found costs of 1 for: %BF16 = call bfloat @llvm.fma.bf16(bfloat undef, bfloat undef, bfloat undef)
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:10 CodeSize:7 Lat:10 SizeLat:10 for: %V4BF16 = call <4 x bfloat> @llvm.fma.v4bf16(<4 x bfloat> undef, <4 x bfloat> undef, <4 x bfloat> undef)
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:22 CodeSize:15 Lat:22 SizeLat:22 for: %V8BF16 = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> undef, <8 x bfloat> undef, <8 x bfloat> undef)
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:44 CodeSize:30 Lat:44 SizeLat:44 for: %V16BF16 = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> undef, <16 x bfloat> undef, <16 x bfloat> undef)
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-BF16-LABEL: 'fma_bf16'
+; CHECK-BF16-NEXT: Cost Model: Found costs of 1 for: %BF16 = call bfloat @llvm.fma.bf16(bfloat undef, bfloat undef, bfloat undef)
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:10 CodeSize:7 Lat:10 SizeLat:10 for: %V4BF16 = call <4 x bfloat> @llvm.fma.v4bf16(<4 x bfloat> undef, <4 x bfloat> undef, <4 x bfloat> undef)
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:22 CodeSize:15 Lat:22 SizeLat:22 for: %V8BF16 = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> undef, <8 x bfloat> undef, <8 x bfloat> undef)
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:44 CodeSize:30 Lat:44 SizeLat:44 for: %V16BF16 = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> undef, <16 x bfloat> undef, <16 x bfloat> undef)
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-SVE-B16B16-LABEL: 'fma_bf16'
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of 1 for: %BF16 = call bfloat @llvm.fma.bf16(bfloat undef, bfloat undef, bfloat undef)
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of 2 for: %V4BF16 = call <4 x bfloat> @llvm.fma.v4bf16(<4 x bfloat> undef, <4 x bfloat> undef, <4 x bfloat> undef)
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of 2 for: %V8BF16 = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> undef, <8 x bfloat> undef, <8 x bfloat> undef)
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of 4 for: %V16BF16 = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> undef, <16 x bfloat> undef, <16 x bfloat> undef)
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = call bfloat @llvm.fma.f16(bfloat undef, bfloat undef, bfloat undef)
+ %V4BF16 = call <4 x bfloat> @llvm.fma.v4f16(<4 x bfloat> undef, <4 x bfloat> undef, <4 x bfloat> undef)
+ %V8BF16 = call <8 x bfloat> @llvm.fma.v8f16(<8 x bfloat> undef, <8 x bfloat> undef, <8 x bfloat> undef)
+ %V16BF16 = call <16 x bfloat> @llvm.fma.v16f16(<16 x bfloat> undef, <16 x bfloat> undef, <16 x bfloat> undef)
+ ret void
+}
+
+define void @fmuladd_bf16() {
+; CHECK-BASE-LABEL: 'fmuladd_bf16'
+; CHECK-BASE-NEXT: Cost Model: Found costs of 1 for: %BF16 = call bfloat @llvm.fmuladd.bf16(bfloat undef, bfloat undef, bfloat undef)
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:23 CodeSize:2 Lat:6 SizeLat:2 for: %V4BF16 = call <4 x bfloat> @llvm.fmuladd.v4bf16(<4 x bfloat> undef, <4 x bfloat> undef, <4 x bfloat> undef)
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:44 CodeSize:2 Lat:6 SizeLat:2 for: %V8BF16 = call <8 x bfloat> @llvm.fmuladd.v8bf16(<8 x bfloat> undef, <8 x bfloat> undef, <8 x bfloat> undef)
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:88 CodeSize:2 Lat:6 SizeLat:2 for: %V16BF16 = call <16 x bfloat> @llvm.fmuladd.v16bf16(<16 x bfloat> undef, <16 x bfloat> undef, <16 x bfloat> undef)
+; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-BF16-LABEL: 'fmuladd_bf16'
+; CHECK-BF16-NEXT: Cost Model: Found costs of 1 for: %BF16 = call bfloat @llvm.fmuladd.bf16(bfloat undef, bfloat undef, bfloat undef)
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:9 CodeSize:2 Lat:6 SizeLat:2 for: %V4BF16 = call <4 x bfloat> @llvm.fmuladd.v4bf16(<4 x bfloat> undef, <4 x bfloat> undef, <4 x bfloat> undef)
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:18 CodeSize:2 Lat:6 SizeLat:2 for: %V8BF16 = call <8 x bfloat> @llvm.fmuladd.v8bf16(<8 x bfloat> undef, <8 x bfloat> undef, <8 x bfloat> undef)
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:36 CodeSize:2 Lat:6 SizeLat:2 for: %V16BF16 = call <16 x bfloat> @llvm.fmuladd.v16bf16(<16 x bfloat> undef, <16 x bfloat> undef, <16 x bfloat> undef)
+; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+; CHECK-SVE-B16B16-LABEL: 'fmuladd_bf16'
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of 1 for: %BF16 = call bfloat @llvm.fmuladd.bf16(bfloat undef, bfloat undef, bfloat undef)
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of 2 for: %V4BF16 = call <4 x bfloat> @llvm.fmuladd.v4bf16(<4 x bfloat> undef, <4 x bfloat> undef, <4 x bfloat> undef)
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of 2 for: %V8BF16 = call <8 x bfloat> @llvm.fmuladd.v8bf16(<8 x bfloat> undef, <8 x bfloat> undef, <8 x bfloat> undef)
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of 4 for: %V16BF16 = call <16 x bfloat> @llvm.fmuladd.v16bf16(<16 x bfloat> undef, <16 x bfloat> undef, <16 x bfloat> undef)
+; CHECK-SVE-B16B16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
+;
+ %BF16 = call bfloat @llvm.fmuladd.f32(bfloat undef, bfloat undef, bfloat undef)
+ %V4BF16 = call <4 x bfloat> @llvm.fmuladd.v4f16(<4 x bfloat> undef, <4 x bfloat> undef, <4 x bfloat> undef)
+ %V8BF16 = call <8 x bfloat> @llvm.fmuladd.v8f16(<8 x bfloat> undef, <8 x bfloat> undef, <8 x bfloat> undef)
+ %V16BF16 = call <16 x bfloat> @llvm.fmuladd.v16f16(<16 x bfloat> undef, <16 x bfloat> undef, <16 x bfloat> undef)
+ ret void
+}
More information about the llvm-commits
mailing list