Skip to content

Commit 39ffa17

Browse files
committed
merge main into amd-staging
revets: 3209766 [ctx_prof] Add Inlining support (llvm#106154) Matthew looking to reland base patch Change-Id: I38c1a12d756af27dd7d748020c49b86caddd07e8
2 parents 5324fb5 + 4f130fa commit 39ffa17

File tree

440 files changed

+50575
-11279
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

440 files changed

+50575
-11279
lines changed

clang-tools-extra/clang-tidy/bugprone/CastingThroughVoidCheck.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ void CastingThroughVoidCheck::check(const MatchFinder::MatchResult &Result) {
3838
const auto ST = *Result.Nodes.getNodeAs<QualType>("source_type");
3939
const auto VT = *Result.Nodes.getNodeAs<QualType>("void_type");
4040
const auto *CE = Result.Nodes.getNodeAs<ExplicitCastExpr>("cast");
41-
diag(CE->getExprLoc(), "do not cast %0 to %1 through %2") << ST << TT << VT;
41+
diag(CE->getExprLoc(),
42+
"do not cast %0 to %1 through %2; use reinterpret_cast instead")
43+
<< ST << TT << VT;
4244
}
4345

4446
} // namespace clang::tidy::bugprone

clang-tools-extra/docs/ReleaseNotes.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ New check aliases
104104
Changes in existing checks
105105
^^^^^^^^^^^^^^^^^^^^^^^^^^
106106

107+
- Improved :doc:`bugprone-casting-through-void
108+
<clang-tidy/checks/bugprone/casting-through-void>` check to suggest replacing
109+
the offending code with ``reinterpret_cast``, to more clearly express intent.
110+
107111
- Improved :doc:`modernize-use-std-format
108112
<clang-tidy/checks/modernize/use-std-format>` check to support replacing
109113
member function calls too.

clang-tools-extra/docs/clang-tidy/checks/bugprone/casting-through-void.rst

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
bugprone-casting-through-void
44
=============================
55

6-
Detects unsafe or redundant two-step casting operations involving ``void*``.
6+
Detects unsafe or redundant two-step casting operations involving ``void*``,
7+
which is equivalent to ``reinterpret_cast`` as per the
8+
`C++ Standard <https://eel.is/c++draft/expr.reinterpret.cast#7>`_.
79

810
Two-step type conversions via ``void*`` are discouraged for several reasons.
911

@@ -16,7 +18,17 @@ Two-step type conversions via ``void*`` are discouraged for several reasons.
1618

1719
In summary, avoiding two-step type conversions through ``void*`` ensures clearer code,
1820
maintains essential compiler warnings, and prevents ambiguity and potential runtime
19-
errors, particularly in complex inheritance scenarios.
21+
errors, particularly in complex inheritance scenarios. If such a cast is wanted,
22+
it shall be done via ``reinterpret_cast``, to express the intent more clearly.
23+
24+
Note: it is expected that, after applying the suggested fix and using
25+
``reinterpret_cast``, the check :doc:`cppcoreguidelines-pro-type-reinterpret-cast
26+
<../cppcoreguidelines/pro-type-reinterpret-cast>` will emit a warning.
27+
This is intentional: ``reinterpret_cast`` is a dangerous operation that can
28+
easily break the strict aliasing rules when dereferencing the casted pointer,
29+
invoking Undefined Behavior. The warning is there to prompt users to carefuly
30+
analyze whether the usage of ``reinterpret_cast`` is safe, in which case the
31+
warning may be suppressed.
2032

2133
Examples:
2234

@@ -29,3 +41,8 @@ Examples:
2941
reinterpret_cast<IntegerPointer>(reinterpret_cast<void *>(ptr)); // WRONG
3042
(IntegerPointer)(void *)ptr; // WRONG
3143
IntegerPointer(static_cast<void *>(ptr)); // WRONG
44+
45+
reinterpret_cast<IntegerPointer>(ptr); // OK, clearly expresses intent.
46+
// NOTE: dereferencing this pointer violates
47+
// the strict aliasing rules, invoking
48+
// Undefined Behavior.

clang-tools-extra/test/clang-tidy/checkers/bugprone/casting-through-void.cpp

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,54 +10,54 @@ const double cd = 100;
1010

1111
void normal_test() {
1212
static_cast<int *>(static_cast<void *>(&d));
13-
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'double *' to 'int *' through 'void *' [bugprone-casting-through-void]
13+
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'double *' to 'int *' through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
1414
static_cast<int *>(static_cast<V>(&d));
15-
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'double *' to 'int *' through 'V' (aka 'void *') [bugprone-casting-through-void]
15+
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'double *' to 'int *' through 'V' (aka 'void *'); use reinterpret_cast instead [bugprone-casting-through-void]
1616
static_cast<int *>(static_cast<void *>(&i));
17-
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'int *' to 'int *' through 'void *' [bugprone-casting-through-void]
17+
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'int *' to 'int *' through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
1818

1919
static_cast<void *>(static_cast<void *>(&i));
2020
}
2121

2222
void const_pointer_test() {
2323
static_cast<int *const>(static_cast<void *>(&d));
24-
// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'double *' to 'int *const' through 'void *' [bugprone-casting-through-void]
24+
// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'double *' to 'int *const' through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
2525
static_cast<int *const>(static_cast<V>(&d));
26-
// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'double *' to 'int *const' through 'V' (aka 'void *') [bugprone-casting-through-void]
26+
// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'double *' to 'int *const' through 'V' (aka 'void *'); use reinterpret_cast instead [bugprone-casting-through-void]
2727
static_cast<int *const>(static_cast<void *>(&i));
28-
// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'int *' to 'int *const' through 'void *' [bugprone-casting-through-void]
28+
// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'int *' to 'int *const' through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
2929

3030
static_cast<void *const>(static_cast<void *>(&i));
3131
}
3232

3333
void const_test() {
3434
static_cast<const int *>(static_cast<const void *>(&d));
35-
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'double *' to 'const int *' through 'const void *' [bugprone-casting-through-void]
35+
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'double *' to 'const int *' through 'const void *'; use reinterpret_cast instead [bugprone-casting-through-void]
3636
static_cast<const int *>(static_cast<const V>(&d));
37-
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'double *' to 'const int *' through 'const V' (aka 'void *const') [bugprone-casting-through-void]
37+
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'double *' to 'const int *' through 'const V' (aka 'void *const'); use reinterpret_cast instead [bugprone-casting-through-void]
3838
static_cast<const int *>(static_cast<const void *>(&i));
39-
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'int *' to 'const int *' through 'const void *' [bugprone-casting-through-void]
39+
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'int *' to 'const int *' through 'const void *'; use reinterpret_cast instead [bugprone-casting-through-void]
4040

4141
static_cast<const void *>(static_cast<const void *>(&i));
4242

4343
static_cast<const int *>(static_cast<const void *>(&cd));
44-
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'const double *' to 'const int *' through 'const void *' [bugprone-casting-through-void]
44+
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'const double *' to 'const int *' through 'const void *'; use reinterpret_cast instead [bugprone-casting-through-void]
4545
static_cast<const int *>(static_cast<const CV>(&cd));
46-
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'const double *' to 'const int *' through 'const CV' (aka 'const void *const') [bugprone-casting-through-void]
46+
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'const double *' to 'const int *' through 'const CV' (aka 'const void *const'); use reinterpret_cast instead [bugprone-casting-through-void]
4747
static_cast<const int *>(static_cast<const void *>(&ci));
48-
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'const int *' to 'const int *' through 'const void *' [bugprone-casting-through-void]
48+
// CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'const int *' to 'const int *' through 'const void *'; use reinterpret_cast instead [bugprone-casting-through-void]
4949

5050
static_cast<const void *>(static_cast<const void *>(&ci));
5151
}
5252

5353

5454
void reinterpret_cast_test() {
5555
static_cast<int *>(reinterpret_cast<void *>(&d));
56-
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'double *' to 'int *' through 'void *' [bugprone-casting-through-void]
56+
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'double *' to 'int *' through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
5757
reinterpret_cast<int *>(static_cast<void *>(&d));
58-
// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'double *' to 'int *' through 'void *' [bugprone-casting-through-void]
58+
// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'double *' to 'int *' through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
5959
reinterpret_cast<int *>(reinterpret_cast<void *>(&d));
60-
// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'double *' to 'int *' through 'void *' [bugprone-casting-through-void]
60+
// CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'double *' to 'int *' through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
6161

6262
static_cast<void *>(reinterpret_cast<void *>(&i));
6363
reinterpret_cast<void *>(reinterpret_cast<void *>(&i));
@@ -66,11 +66,11 @@ void reinterpret_cast_test() {
6666

6767
void c_style_cast_test() {
6868
static_cast<int *>((void *)&d);
69-
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'double *' to 'int *' through 'void *' [bugprone-casting-through-void]
69+
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'double *' to 'int *' through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
7070
(int *)(void *)&d;
71-
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: do not cast 'double *' to 'int *' through 'void *' [bugprone-casting-through-void]
71+
// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: do not cast 'double *' to 'int *' through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
7272
static_cast<int *>((void *)&d);
73-
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'double *' to 'int *' through 'void *' [bugprone-casting-through-void]
73+
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'double *' to 'int *' through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
7474

7575
static_cast<void *>((void *)&i);
7676
}
@@ -82,12 +82,12 @@ using I = int *;
8282
void cxx_functional_cast() {
8383
A(static_cast<void*>(&d));
8484
I(static_cast<void*>(&d));
85-
// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not cast 'double *' to 'I' (aka 'int *') through 'void *' [bugprone-casting-through-void]
85+
// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not cast 'double *' to 'I' (aka 'int *') through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
8686
}
8787

8888
void bit_cast() {
8989
__builtin_bit_cast(int *, static_cast<void *>(&d));
90-
// CHECK-MESSAGES: :[[@LINE-1]]:29: warning: do not cast 'double *' to 'int *' through 'void *' [bugprone-casting-through-void]
90+
// CHECK-MESSAGES: :[[@LINE-1]]:29: warning: do not cast 'double *' to 'int *' through 'void *'; use reinterpret_cast instead [bugprone-casting-through-void]
9191
}
9292

9393
namespace PR87069 {

clang/docs/ReleaseNotes.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,8 @@ Improvements to Clang's diagnostics
273273

274274
- Improved diagnostic when trying to overload a function in an ``extern "C"`` context. (#GH80235)
275275

276+
- Clang now respects lifetimebound attribute for the assignment operator parameter. (#GH106372).
277+
276278
Improvements to Clang's time-trace
277279
----------------------------------
278280

@@ -347,6 +349,9 @@ Bug Fixes to C++ Support
347349
specialization right before its declaration context. (#GH64082)
348350
- Fixed a constraint comparison bug for friend declarations. (#GH78101)
349351
- Fix handling of ``_`` as the name of a lambda's init capture variable. (#GH107024)
352+
- Fix an issue with dependent source location expressions (#GH106428), (#GH81155), (#GH80210), (#GH85373)
353+
- Fixed a bug in the substitution of empty pack indexing types. (#GH105903)
354+
- Clang no longer tries to capture non-odr used default arguments of template parameters of generic lambdas (#GH107048)
350355

351356
Bug Fixes to AST Handling
352357
^^^^^^^^^^^^^^^^^^^^^^^^^

clang/include/clang/AST/Type.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5828,12 +5828,15 @@ class PackIndexingType final
58285828
QualType Pattern;
58295829
Expr *IndexExpr;
58305830

5831-
unsigned Size;
5831+
unsigned Size : 31;
5832+
5833+
LLVM_PREFERRED_TYPE(bool)
5834+
unsigned ExpandsToEmptyPack : 1;
58325835

58335836
protected:
58345837
friend class ASTContext; // ASTContext creates these.
58355838
PackIndexingType(const ASTContext &Context, QualType Canonical,
5836-
QualType Pattern, Expr *IndexExpr,
5839+
QualType Pattern, Expr *IndexExpr, bool ExpandsToEmptyPack,
58375840
ArrayRef<QualType> Expansions = {});
58385841

58395842
public:
@@ -5857,6 +5860,8 @@ class PackIndexingType final
58575860

58585861
bool hasSelectedType() const { return getSelectedIndex() != std::nullopt; }
58595862

5863+
bool expandsToEmptyPack() const { return ExpandsToEmptyPack; }
5864+
58605865
ArrayRef<QualType> getExpansions() const {
58615866
return {getExpansionsPtr(), Size};
58625867
}
@@ -5869,10 +5874,10 @@ class PackIndexingType final
58695874
if (hasSelectedType())
58705875
getSelectedType().Profile(ID);
58715876
else
5872-
Profile(ID, Context, getPattern(), getIndexExpr());
5877+
Profile(ID, Context, getPattern(), getIndexExpr(), expandsToEmptyPack());
58735878
}
58745879
static void Profile(llvm::FoldingSetNodeID &ID, const ASTContext &Context,
5875-
QualType Pattern, Expr *E);
5880+
QualType Pattern, Expr *E, bool ExpandsToEmptyPack);
58765881

58775882
private:
58785883
const QualType *getExpansionsPtr() const {

clang/include/clang/AST/TypeProperties.td

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,9 +473,12 @@ let Class = PackIndexingType in {
473473
def : Property<"indexExpression", ExprRef> {
474474
let Read = [{ node->getIndexExpr() }];
475475
}
476+
def : Property<"expandsToEmptyPack", Bool> {
477+
let Read = [{ node->expandsToEmptyPack() }];
478+
}
476479

477480
def : Creator<[{
478-
return ctx.getPackIndexingType(pattern, indexExpression);
481+
return ctx.getPackIndexingType(pattern, indexExpression, expandsToEmptyPack);
479482
}]>;
480483
}
481484

clang/include/clang/Basic/Builtins.td

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4679,6 +4679,12 @@ def HLSLWaveGetLaneIndex : LangBuiltin<"HLSL_LANG"> {
46794679
let Prototype = "unsigned int()";
46804680
}
46814681

4682+
def HLSLWaveIsFirstLane : LangBuiltin<"HLSL_LANG"> {
4683+
let Spellings = ["__builtin_hlsl_wave_is_first_lane"];
4684+
let Attributes = [NoThrow, Const];
4685+
let Prototype = "bool()";
4686+
}
4687+
46824688
def HLSLClamp : LangBuiltin<"HLSL_LANG"> {
46834689
let Spellings = ["__builtin_hlsl_elementwise_clamp"];
46844690
let Attributes = [NoThrow, Const];

clang/include/clang/Basic/BuiltinsX86.def

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2261,6 +2261,68 @@ TARGET_BUILTIN(__builtin_ia32_vcvtneph2hf8_512_mask, "V32cV32xV32cUi", "nV:512:"
22612261
TARGET_BUILTIN(__builtin_ia32_vcvtneph2hf8s_128_mask, "V16cV8xV16cUc", "nV:128:", "avx10.2-256")
22622262
TARGET_BUILTIN(__builtin_ia32_vcvtneph2hf8s_256_mask, "V16cV16xV16cUs", "nV:256:", "avx10.2-256")
22632263
TARGET_BUILTIN(__builtin_ia32_vcvtneph2hf8s_512_mask, "V32cV32xV32cUi", "nV:512:", "avx10.2-512")
2264+
2265+
// AVX10.2 BF16
2266+
TARGET_BUILTIN(__builtin_ia32_loadsbf16128_mask, "V8yV8yC*V8yUc", "nV:128:", "avx10.2-256")
2267+
TARGET_BUILTIN(__builtin_ia32_storesbf16128_mask, "vV8y*V8yUc", "nV:128:", "avx10.2-256")
2268+
TARGET_BUILTIN(__builtin_ia32_vaddnepbf16128, "V8yV8yV8y", "ncV:128:", "avx10.2-256")
2269+
TARGET_BUILTIN(__builtin_ia32_vaddnepbf16256, "V16yV16yV16y", "ncV:256:", "avx10.2-256")
2270+
TARGET_BUILTIN(__builtin_ia32_vaddnepbf16512, "V32yV32yV32y", "ncV:512:", "avx10.2-512")
2271+
TARGET_BUILTIN(__builtin_ia32_vdivnepbf16128, "V8yV8yV8y", "ncV:128:", "avx10.2-256")
2272+
TARGET_BUILTIN(__builtin_ia32_vdivnepbf16256, "V16yV16yV16y", "ncV:256:", "avx10.2-256")
2273+
TARGET_BUILTIN(__builtin_ia32_vdivnepbf16512, "V32yV32yV32y", "ncV:512:", "avx10.2-512")
2274+
TARGET_BUILTIN(__builtin_ia32_vmaxpbf16128, "V8yV8yV8y", "ncV:128:", "avx10.2-256")
2275+
TARGET_BUILTIN(__builtin_ia32_vmaxpbf16256, "V16yV16yV16y", "ncV:256:", "avx10.2-256")
2276+
TARGET_BUILTIN(__builtin_ia32_vmaxpbf16512, "V32yV32yV32y", "ncV:512:", "avx10.2-512")
2277+
TARGET_BUILTIN(__builtin_ia32_vminpbf16128, "V8yV8yV8y", "ncV:128:", "avx10.2-256")
2278+
TARGET_BUILTIN(__builtin_ia32_vminpbf16256, "V16yV16yV16y", "ncV:256:", "avx10.2-256")
2279+
TARGET_BUILTIN(__builtin_ia32_vminpbf16512, "V32yV32yV32y", "ncV:512:", "avx10.2-512")
2280+
TARGET_BUILTIN(__builtin_ia32_vmulnepbf16128, "V8yV8yV8y", "ncV:128:", "avx10.2-256")
2281+
TARGET_BUILTIN(__builtin_ia32_vmulnepbf16256, "V16yV16yV16y", "ncV:256:", "avx10.2-256")
2282+
TARGET_BUILTIN(__builtin_ia32_vmulnepbf16512, "V32yV32yV32y", "ncV:512:", "avx10.2-512")
2283+
TARGET_BUILTIN(__builtin_ia32_vsubnepbf16128, "V8yV8yV8y", "ncV:128:", "avx10.2-256")
2284+
TARGET_BUILTIN(__builtin_ia32_vsubnepbf16256, "V16yV16yV16y", "ncV:256:", "avx10.2-256")
2285+
TARGET_BUILTIN(__builtin_ia32_vsubnepbf16512, "V32yV32yV32y", "ncV:512:", "avx10.2-512")
2286+
TARGET_BUILTIN(__builtin_ia32_vcomsbf16eq, "iV8yV8y", "ncV:128:", "avx10.2-256")
2287+
TARGET_BUILTIN(__builtin_ia32_vcomsbf16lt, "iV8yV8y", "ncV:128:", "avx10.2-256")
2288+
TARGET_BUILTIN(__builtin_ia32_vcomsbf16neq, "iV8yV8y", "ncV:128:", "avx10.2-256")
2289+
TARGET_BUILTIN(__builtin_ia32_vcomsbf16ge, "iV8yV8y", "ncV:128:", "avx10.2-256")
2290+
TARGET_BUILTIN(__builtin_ia32_vcomsbf16gt, "iV8yV8y", "ncV:128:", "avx10.2-256")
2291+
TARGET_BUILTIN(__builtin_ia32_vcomsbf16le, "iV8yV8y", "ncV:128:", "avx10.2-256")
2292+
TARGET_BUILTIN(__builtin_ia32_vcmppbf16512_mask,"UiV32yV32yIiUi", "ncV:512:", "avx10.2-512")
2293+
TARGET_BUILTIN(__builtin_ia32_vcmppbf16256_mask,"UsV16yV16yIiUs", "ncV:256:", "avx10.2-256")
2294+
TARGET_BUILTIN(__builtin_ia32_vcmppbf16128_mask,"UcV8yV8yIiUc", "ncV:128:", "avx10.2-256")
2295+
TARGET_BUILTIN(__builtin_ia32_vfpclasspbf16128_mask, "UcV8yIiUc", "ncV:128:", "avx10.2-256")
2296+
TARGET_BUILTIN(__builtin_ia32_vfpclasspbf16256_mask, "UsV16yIiUs", "ncV:256:", "avx10.2-256")
2297+
TARGET_BUILTIN(__builtin_ia32_vfpclasspbf16512_mask, "UiV32yIiUi", "ncV:512:", "avx10.2-512")
2298+
TARGET_BUILTIN(__builtin_ia32_vscalefpbf16128_mask, "V8yV8yV8yV8yUc", "ncV:128:", "avx10.2-256")
2299+
TARGET_BUILTIN(__builtin_ia32_vscalefpbf16256_mask, "V16yV16yV16yV16yUs", "ncV:256:", "avx10.2-256")
2300+
TARGET_BUILTIN(__builtin_ia32_vscalefpbf16512_mask, "V32yV32yV32yV32yUi", "ncV:512:", "avx10.2-512")
2301+
TARGET_BUILTIN(__builtin_ia32_vrcppbf16128_mask, "V8yV8yV8yUc", "ncV:128:", "avx10.2-256")
2302+
TARGET_BUILTIN(__builtin_ia32_vrcppbf16256_mask, "V16yV16yV16yUs", "ncV:256:", "avx10.2-256")
2303+
TARGET_BUILTIN(__builtin_ia32_vrcppbf16512_mask, "V32yV32yV32yUi", "ncV:512:", "avx10.2-512")
2304+
TARGET_BUILTIN(__builtin_ia32_vgetexppbf16128_mask, "V8yV8yV8yUc", "ncV:128:", "avx10.2-256")
2305+
TARGET_BUILTIN(__builtin_ia32_vgetexppbf16256_mask, "V16yV16yV16yUs", "ncV:256:", "avx10.2-256")
2306+
TARGET_BUILTIN(__builtin_ia32_vgetexppbf16512_mask, "V32yV32yV32yUi", "ncV:512:", "avx10.2-512")
2307+
TARGET_BUILTIN(__builtin_ia32_vrsqrtpbf16128_mask, "V8yV8yV8yUc", "ncV:128:", "avx10.2-256")
2308+
TARGET_BUILTIN(__builtin_ia32_vrsqrtpbf16256_mask, "V16yV16yV16yUs", "ncV:256:", "avx10.2-256")
2309+
TARGET_BUILTIN(__builtin_ia32_vrsqrtpbf16512_mask, "V32yV32yV32yUi", "ncV:512:", "avx10.2-512")
2310+
TARGET_BUILTIN(__builtin_ia32_vreducenepbf16128_mask, "V8yV8yIiV8yUc", "ncV:128:", "avx10.2-256")
2311+
TARGET_BUILTIN(__builtin_ia32_vreducenepbf16256_mask, "V16yV16yIiV16yUs", "ncV:256:", "avx10.2-256")
2312+
TARGET_BUILTIN(__builtin_ia32_vreducenepbf16512_mask, "V32yV32yIiV32yUi", "ncV:512:", "avx10.2-512")
2313+
TARGET_BUILTIN(__builtin_ia32_vrndscalenepbf16_128_mask, "V8yV8yIiV8yUc", "ncV:128:", "avx10.2-256")
2314+
TARGET_BUILTIN(__builtin_ia32_vrndscalenepbf16_256_mask, "V16yV16yIiV16yUs", "ncV:256:", "avx10.2-256")
2315+
TARGET_BUILTIN(__builtin_ia32_vrndscalenepbf16_mask, "V32yV32yIiV32yUi", "ncV:512:", "avx10.2-512")
2316+
TARGET_BUILTIN(__builtin_ia32_vgetmantpbf16128_mask, "V8yV8yIiV8yUc", "ncV:128:", "avx10.2-256")
2317+
TARGET_BUILTIN(__builtin_ia32_vgetmantpbf16256_mask, "V16yV16yIiV16yUs", "ncV:256:", "avx10.2-256")
2318+
TARGET_BUILTIN(__builtin_ia32_vgetmantpbf16512_mask, "V32yV32yIiV32yUi", "ncV:512:", "avx10.2-512")
2319+
TARGET_BUILTIN(__builtin_ia32_vsqrtnepbf16, "V8yV8y", "ncV:128:", "avx10.2-256")
2320+
TARGET_BUILTIN(__builtin_ia32_vsqrtnepbf16256, "V16yV16y", "ncV:256:", "avx10.2-256")
2321+
TARGET_BUILTIN(__builtin_ia32_vsqrtnepbf16512, "V32yV32y", "ncV:512:", "avx10.2-512")
2322+
TARGET_BUILTIN(__builtin_ia32_vfmaddnepbh512, "V32yV32yV32yV32y", "ncV:512:", "avx10.2-512")
2323+
TARGET_BUILTIN(__builtin_ia32_vfmaddnepbh256, "V16yV16yV16yV16y", "ncV:256:", "avx10.2-256")
2324+
TARGET_BUILTIN(__builtin_ia32_vfmaddnepbh128, "V8yV8yV8yV8y", "ncV:128:", "avx10.2-256")
2325+
22642326
#undef BUILTIN
22652327
#undef TARGET_BUILTIN
22662328
#undef TARGET_HEADER_BUILTIN

0 commit comments

Comments
 (0)