Skip to content

Commit 0ac6f50

Browse files
Merge branch 'main' into cleanup/std-type-traits
2 parents 7df60d1 + af14646 commit 0ac6f50

File tree

15 files changed

+718
-27
lines changed

15 files changed

+718
-27
lines changed

clang/lib/Headers/__clang_cuda_device_functions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,7 @@ __DEVICE__ float __tanf(float __a) { return __nv_fast_tanf(__a); }
528528
__DEVICE__ void __threadfence(void) { __nvvm_membar_gl(); }
529529
__DEVICE__ void __threadfence_block(void) { __nvvm_membar_cta(); };
530530
__DEVICE__ void __threadfence_system(void) { __nvvm_membar_sys(); };
531-
__DEVICE__ void __trap(void) { __asm__ __volatile__("trap;"); }
531+
__DEVICE__ __attribute__((noreturn)) void __trap(void) { __builtin_trap(); }
532532
__DEVICE__ unsigned short
533533
__usAtomicCAS(unsigned short *__p, unsigned short __cmp, unsigned short __v) {
534534
return __nvvm_atom_cas_gen_us(__p, __cmp, __v);

flang-rt/lib/runtime/environment.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717

1818
#ifdef _WIN32
1919
extern char **_environ;
20+
#elif defined(__FreeBSD__)
21+
// FreeBSD has environ in crt rather than libc. Using "extern char** environ"
22+
// in the code of a shared library makes it fail to link with -Wl,--no-undefined
23+
// See https://reviews.freebsd.org/D30842#840642
2024
#else
2125
extern char **environ;
2226
#endif
@@ -104,6 +108,11 @@ void ExecutionEnvironment::Configure(int ac, const char *av[],
104108

105109
#ifdef _WIN32
106110
envp = _environ;
111+
#elif defined(__FreeBSD__)
112+
auto envpp{reinterpret_cast<char ***>(dlsym(RTLD_DEFAULT, "environ"))};
113+
if (envpp) {
114+
envp = *envpp;
115+
}
107116
#else
108117
envp = environ;
109118
#endif
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
v1
22
f call_me
33
c 0
4+
c 1

llvm/lib/Transforms/Vectorize/LoopVectorize.cpp

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,11 @@ static cl::opt<TailFoldingStyle> ForceTailFoldingStyle(
249249
"Use predicated EVL instructions for tail folding. If EVL "
250250
"is unsupported, fallback to data-without-lane-mask.")));
251251

252+
cl::opt<bool> llvm::EnableWideActiveLaneMask(
253+
"enable-wide-lane-mask", cl::init(false), cl::Hidden,
254+
cl::desc("Enable use of wide lane masks when used for control flow in "
255+
"tail-folded loops"));
256+
252257
static cl::opt<bool> MaximizeBandwidth(
253258
"vectorizer-maximize-bandwidth", cl::init(false), cl::Hidden,
254259
cl::desc("Maximize bandwidth when selecting vectorization factor which "
@@ -1314,6 +1319,12 @@ class LoopVectorizationCostModel {
13141319
return ScalarEpilogueStatus == CM_ScalarEpilogueAllowed;
13151320
}
13161321

1322+
/// Returns true if tail-folding is preferred over a scalar epilogue.
1323+
bool preferPredicatedLoop() const {
1324+
return ScalarEpilogueStatus == CM_ScalarEpilogueNotNeededUsePredicate ||
1325+
ScalarEpilogueStatus == CM_ScalarEpilogueNotAllowedUsePredicate;
1326+
}
1327+
13171328
/// Returns the TailFoldingStyle that is best for the current loop.
13181329
TailFoldingStyle getTailFoldingStyle(bool IVUpdateMayOverflow = true) const {
13191330
if (!ChosenTailFoldingStyle)
@@ -1374,6 +1385,17 @@ class LoopVectorizationCostModel {
13741385
return getTailFoldingStyle() != TailFoldingStyle::None;
13751386
}
13761387

1388+
/// Returns true if the use of wide lane masks is requested and the loop is
1389+
/// using tail-folding with a lane mask for control flow.
1390+
bool useWideActiveLaneMask() const {
1391+
if (!EnableWideActiveLaneMask)
1392+
return false;
1393+
1394+
TailFoldingStyle TF = getTailFoldingStyle();
1395+
return TF == TailFoldingStyle::DataAndControlFlow ||
1396+
TF == TailFoldingStyle::DataAndControlFlowWithoutRuntimeCheck;
1397+
}
1398+
13771399
/// Return maximum safe number of elements to be processed per vector
13781400
/// iteration, which do not prevent store-load forwarding and are safe with
13791401
/// regard to the memory dependencies. Required for EVL-based VPlans to
@@ -4560,7 +4582,12 @@ LoopVectorizationPlanner::selectInterleaveCount(VPlan &Plan, ElementCount VF,
45604582
// 3. We don't interleave if we think that we will spill registers to memory
45614583
// due to the increased register pressure.
45624584

4563-
if (!CM.isScalarEpilogueAllowed())
4585+
// Only interleave tail-folded loops if wide lane masks are requested, as the
4586+
// overhead of multiple instructions to calculate the predicate is likely
4587+
// not beneficial. If a scalar epilogue is not allowed for any other reason,
4588+
// do not interleave.
4589+
if (!CM.isScalarEpilogueAllowed() &&
4590+
!(CM.preferPredicatedLoop() && CM.useWideActiveLaneMask()))
45644591
return 1;
45654592

45664593
if (any_of(Plan.getVectorLoopRegion()->getEntryBasicBlock()->phis(),

llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@
4040
using namespace llvm;
4141
using namespace VPlanPatternMatch;
4242

43-
static cl::opt<bool> EnableWideActiveLaneMask(
44-
"enable-wide-lane-mask", cl::init(false), cl::Hidden,
45-
cl::desc("Enable use of wide get active lane mask instructions"));
46-
4743
bool VPlanTransforms::tryToConvertVPInstructionsToVPRecipes(
4844
VPlan &Plan,
4945
function_ref<const InductionDescriptor *(PHINode *)>

llvm/lib/Transforms/Vectorize/VPlanTransforms.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class VPRecipeBuilder;
3232
struct VFRange;
3333

3434
extern cl::opt<bool> VerifyEachVPlan;
35+
extern cl::opt<bool> EnableWideActiveLaneMask;
3536

3637
struct VPlanTransforms {
3738
/// Helper to run a VPlan transform \p Transform on \p VPlan, forwarding extra

llvm/test/Analysis/CostModel/AArch64/sve-arith-fp.ll

Lines changed: 129 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2-
; RUN: opt < %s -enable-no-nans-fp-math -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output -mtriple=aarch64 -mattr=+fullfp16 -mattr=+sve | FileCheck %s
2+
; RUN: opt < %s -enable-no-nans-fp-math -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output -mtriple=aarch64 -mattr=+fullfp16,+sve | FileCheck %s --check-prefixes=CHECK,CHECK-BASE
3+
; RUN: opt < %s -enable-no-nans-fp-math -passes="print<cost-model>" -cost-kind=all 2>&1 -disable-output -mtriple=aarch64 -mattr=+fullfp16,+sve-b16b16,+sve | FileCheck %s --check-prefixes=CHECK,CHECK-BF16
34

45
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
56

@@ -31,6 +32,21 @@ define void @fadd() {
3132
ret void
3233
}
3334

35+
define void @fadd_bf16() {
36+
; CHECK-LABEL: 'fadd_bf16'
37+
; CHECK-NEXT: Cost Model: Found costs of RThru:11 CodeSize:1 Lat:3 SizeLat:1 for: %NXV4BF16 = fadd <vscale x 4 x bfloat> poison, poison
38+
; CHECK-NEXT: Cost Model: Found costs of RThru:27 CodeSize:1 Lat:3 SizeLat:1 for: %NXV8BF16 = fadd <vscale x 8 x bfloat> poison, poison
39+
; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:1 Lat:3 SizeLat:1 for: %NXV16BF16 = fadd <vscale x 16 x bfloat> poison, poison
40+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
41+
;
42+
%NXV4BF16 = fadd <vscale x 4 x bfloat> poison, poison
43+
%NXV8BF16 = fadd <vscale x 8 x bfloat> poison, poison
44+
%NXV16BF16 = fadd <vscale x 16 x bfloat> poison, poison
45+
46+
ret void
47+
}
48+
49+
3450
define void @fsub() {
3551
; CHECK-LABEL: 'fsub'
3652
; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V4F16 = fsub <vscale x 4 x half> poison, poison
@@ -59,6 +75,20 @@ define void @fsub() {
5975
ret void
6076
}
6177

78+
define void @fsub_bf16() {
79+
; CHECK-LABEL: 'fsub_bf16'
80+
; CHECK-NEXT: Cost Model: Found costs of RThru:11 CodeSize:1 Lat:3 SizeLat:1 for: %NXV4BF16 = fsub <vscale x 4 x bfloat> poison, poison
81+
; CHECK-NEXT: Cost Model: Found costs of RThru:27 CodeSize:1 Lat:3 SizeLat:1 for: %NXV8BF16 = fsub <vscale x 8 x bfloat> poison, poison
82+
; CHECK-NEXT: Cost Model: Found costs of RThru:54 CodeSize:1 Lat:3 SizeLat:1 for: %NXV16BF16 = fsub <vscale x 16 x bfloat> poison, poison
83+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
84+
;
85+
%NXV4BF16 = fsub <vscale x 4 x bfloat> poison, poison
86+
%NXV8BF16 = fsub <vscale x 8 x bfloat> poison, poison
87+
%NXV16BF16 = fsub <vscale x 16 x bfloat> poison, poison
88+
89+
ret void
90+
}
91+
6292
define void @fneg() {
6393
; CHECK-LABEL: 'fneg'
6494
; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %V2F16 = fneg <vscale x 2 x half> poison
@@ -87,6 +117,22 @@ define void @fneg() {
87117
ret void
88118
}
89119

120+
define void @fneg_bf16() {
121+
; CHECK-LABEL: 'fneg_bf16'
122+
; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %NXV2BF16 = fneg <vscale x 2 x bfloat> poison
123+
; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %NXV4BF16 = fneg <vscale x 4 x bfloat> poison
124+
; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:3 SizeLat:1 for: %NXV8BF16 = fneg <vscale x 8 x bfloat> poison
125+
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %NXV16BF16 = fneg <vscale x 16 x bfloat> poison
126+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
127+
;
128+
%NXV2BF16 = fneg <vscale x 2 x bfloat> poison
129+
%NXV4BF16 = fneg <vscale x 4 x bfloat> poison
130+
%NXV8BF16 = fneg <vscale x 8 x bfloat> poison
131+
%NXV16BF16 = fneg <vscale x 16 x bfloat> poison
132+
133+
ret void
134+
}
135+
90136
define void @fmul() {
91137
; CHECK-LABEL: 'fmul'
92138
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %V4F16 = fmul <vscale x 4 x half> poison, poison
@@ -113,6 +159,20 @@ define void @fmul() {
113159
ret void
114160
}
115161

162+
define void @fmul_bf16() {
163+
; CHECK-LABEL: 'fmul_bf16'
164+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:1 Lat:3 SizeLat:1 for: %NXV4BF16 = fmul <vscale x 4 x bfloat> poison, poison
165+
; CHECK-NEXT: Cost Model: Found costs of RThru:29 CodeSize:1 Lat:3 SizeLat:1 for: %NXV8BF16 = fmul <vscale x 8 x bfloat> poison, poison
166+
; CHECK-NEXT: Cost Model: Found costs of RThru:58 CodeSize:1 Lat:3 SizeLat:1 for: %NXV16BF16 = fmul <vscale x 16 x bfloat> poison, poison
167+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
168+
;
169+
%NXV4BF16 = fmul <vscale x 4 x bfloat> poison, poison
170+
%NXV8BF16 = fmul <vscale x 8 x bfloat> poison, poison
171+
%NXV16BF16 = fmul <vscale x 16 x bfloat> poison, poison
172+
173+
ret void
174+
}
175+
116176
define void @fdiv() {
117177
; CHECK-LABEL: 'fdiv'
118178
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:4 Lat:4 SizeLat:4 for: %V4F16 = fdiv <vscale x 4 x half> poison, poison
@@ -139,6 +199,20 @@ define void @fdiv() {
139199
ret void
140200
}
141201

202+
define void @fdiv_bf16() {
203+
; CHECK-LABEL: 'fdiv_bf16'
204+
; CHECK-NEXT: Cost Model: Found costs of RThru:12 CodeSize:4 Lat:4 SizeLat:4 for: %NXV4BF16 = fdiv <vscale x 4 x bfloat> poison, poison
205+
; CHECK-NEXT: Cost Model: Found costs of RThru:29 CodeSize:4 Lat:4 SizeLat:4 for: %NXV8BF16 = fdiv <vscale x 8 x bfloat> poison, poison
206+
; CHECK-NEXT: Cost Model: Found costs of RThru:58 CodeSize:4 Lat:4 SizeLat:4 for: %NXV16BF16 = fdiv <vscale x 16 x bfloat> poison, poison
207+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
208+
;
209+
%NXV4BF16 = fdiv <vscale x 4 x bfloat> poison, poison
210+
%NXV8BF16 = fdiv <vscale x 8 x bfloat> poison, poison
211+
%NXV16BF16 = fdiv <vscale x 16 x bfloat> poison, poison
212+
213+
ret void
214+
}
215+
142216
define void @frem() {
143217
; CHECK-LABEL: 'frem'
144218
; CHECK-NEXT: Cost Model: Found costs of RThru:Invalid CodeSize:4 Lat:4 SizeLat:4 for: %V4F16 = frem <vscale x 4 x half> poison, poison
@@ -165,6 +239,20 @@ define void @frem() {
165239
ret void
166240
}
167241

242+
define void @frem_bf16() {
243+
; CHECK-LABEL: 'frem_bf16'
244+
; CHECK-NEXT: Cost Model: Found costs of RThru:Invalid CodeSize:4 Lat:4 SizeLat:4 for: %NXV4BF16 = frem <vscale x 4 x bfloat> poison, poison
245+
; CHECK-NEXT: Cost Model: Found costs of RThru:Invalid CodeSize:4 Lat:4 SizeLat:4 for: %NXV8BF16 = frem <vscale x 8 x bfloat> poison, poison
246+
; CHECK-NEXT: Cost Model: Found costs of RThru:Invalid CodeSize:4 Lat:4 SizeLat:4 for: %NXV16BF16 = frem <vscale x 16 x bfloat> poison, poison
247+
; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
248+
;
249+
%NXV4BF16 = frem <vscale x 4 x bfloat> poison, poison
250+
%NXV8BF16 = frem <vscale x 8 x bfloat> poison, poison
251+
%NXV16BF16 = frem <vscale x 16 x bfloat> poison, poison
252+
253+
ret void
254+
}
255+
168256
define void @fma() {
169257
; CHECK-LABEL: 'fma'
170258
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %V4F16 = call <vscale x 4 x half> @llvm.fma.nxv4f16(<vscale x 4 x half> poison, <vscale x 4 x half> poison, <vscale x 4 x half> poison)
@@ -191,6 +279,26 @@ define void @fma() {
191279
ret void
192280
}
193281

282+
define void @fma_bf16() {
283+
; CHECK-BASE-LABEL: 'fma_bf16'
284+
; CHECK-BASE-NEXT: Cost Model: Found costs of 1 for: %NXV4BF16 = call <vscale x 4 x bfloat> @llvm.fma.nxv4bf16(<vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison)
285+
; CHECK-BASE-NEXT: Cost Model: Found costs of 1 for: %NXV8BF16 = call <vscale x 8 x bfloat> @llvm.fma.nxv8bf16(<vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison)
286+
; CHECK-BASE-NEXT: Cost Model: Found costs of 4 for: %NXV16BF16 = call <vscale x 16 x bfloat> @llvm.fma.nxv16bf16(<vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison)
287+
; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
288+
;
289+
; CHECK-BF16-LABEL: 'fma_bf16'
290+
; CHECK-BF16-NEXT: Cost Model: Found costs of 2 for: %NXV4BF16 = call <vscale x 4 x bfloat> @llvm.fma.nxv4bf16(<vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison)
291+
; CHECK-BF16-NEXT: Cost Model: Found costs of 2 for: %NXV8BF16 = call <vscale x 8 x bfloat> @llvm.fma.nxv8bf16(<vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison)
292+
; CHECK-BF16-NEXT: Cost Model: Found costs of 4 for: %NXV16BF16 = call <vscale x 16 x bfloat> @llvm.fma.nxv16bf16(<vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison)
293+
; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
294+
;
295+
%NXV4BF16 = call <vscale x 4 x bfloat> @llvm.fma.nxv4bf16(<vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison)
296+
%NXV8BF16 = call <vscale x 8 x bfloat> @llvm.fma.nxv8bf16(<vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison)
297+
%NXV16BF16 = call <vscale x 16 x bfloat> @llvm.fma.nxv16bf16(<vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison)
298+
299+
ret void
300+
}
301+
194302
define void @fmuladd() {
195303
; CHECK-LABEL: 'fmuladd'
196304
; CHECK-NEXT: Cost Model: Found costs of RThru:2 CodeSize:1 Lat:3 SizeLat:1 for: %V4F16 = call <vscale x 4 x half> @llvm.fmuladd.nxv4f16(<vscale x 4 x half> poison, <vscale x 4 x half> poison, <vscale x 4 x half> poison)
@@ -216,3 +324,23 @@ define void @fmuladd() {
216324

217325
ret void
218326
}
327+
328+
define void @fmuladd_bf16() {
329+
; CHECK-BASE-LABEL: 'fmuladd_bf16'
330+
; CHECK-BASE-NEXT: Cost Model: Found costs of 1 for: %NXV4BF16 = call <vscale x 4 x bfloat> @llvm.fmuladd.nxv4bf16(<vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison)
331+
; CHECK-BASE-NEXT: Cost Model: Found costs of 1 for: %NXV8BF16 = call <vscale x 8 x bfloat> @llvm.fmuladd.nxv8bf16(<vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison)
332+
; CHECK-BASE-NEXT: Cost Model: Found costs of 4 for: %NXV16BF16 = call <vscale x 16 x bfloat> @llvm.fmuladd.nxv16bf16(<vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison)
333+
; CHECK-BASE-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
334+
;
335+
; CHECK-BF16-LABEL: 'fmuladd_bf16'
336+
; CHECK-BF16-NEXT: Cost Model: Found costs of 2 for: %NXV4BF16 = call <vscale x 4 x bfloat> @llvm.fmuladd.nxv4bf16(<vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison)
337+
; CHECK-BF16-NEXT: Cost Model: Found costs of 2 for: %NXV8BF16 = call <vscale x 8 x bfloat> @llvm.fmuladd.nxv8bf16(<vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison)
338+
; CHECK-BF16-NEXT: Cost Model: Found costs of 4 for: %NXV16BF16 = call <vscale x 16 x bfloat> @llvm.fmuladd.nxv16bf16(<vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison)
339+
; CHECK-BF16-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret void
340+
;
341+
%NXV4BF16 = call <vscale x 4 x bfloat> @llvm.fmuladd.nxv4bf16(<vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison, <vscale x 4 x bfloat> poison)
342+
%NXV8BF16 = call <vscale x 8 x bfloat> @llvm.fmuladd.nxv8bf16(<vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison, <vscale x 8 x bfloat> poison)
343+
%NXV16BF16 = call <vscale x 16 x bfloat> @llvm.fmuladd.nxv16bf16(<vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison, <vscale x 16 x bfloat> poison)
344+
345+
ret void
346+
}

0 commit comments

Comments
 (0)