Skip to content

Commit 9cf17a0

Browse files
authored
Merge pull request llvm#545 from AMD-Lightning-Internal/amd/merge/upstream_merge_20250206213851
merge main into amd-staging
2 parents 1a0ed56 + 919d4ba commit 9cf17a0

File tree

319 files changed

+23802
-1986
lines changed

Some content is hidden

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

319 files changed

+23802
-1986
lines changed

bolt/lib/Core/BinaryContext.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1759,7 +1759,11 @@ void BinaryContext::preprocessDebugInfo() {
17591759
dwarf::toString(CU->getUnitDIE().find(dwarf::DW_AT_name), nullptr);
17601760
if (std::optional<uint64_t> DWOID = CU->getDWOId()) {
17611761
auto Iter = DWOCUs.find(*DWOID);
1762-
assert(Iter != DWOCUs.end() && "DWO CU was not found.");
1762+
if (Iter == DWOCUs.end()) {
1763+
this->errs() << "BOLT-ERROR: DWO CU was not found for " << Name
1764+
<< '\n';
1765+
exit(1);
1766+
}
17631767
Name = dwarf::toString(
17641768
Iter->second->getUnitDIE().find(dwarf::DW_AT_name), nullptr);
17651769
}

clang/docs/LanguageExtensions.rst

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1803,10 +1803,6 @@ The following type trait primitives are supported by Clang. Those traits marked
18031803
* ``__is_pointer_interconvertible_base_of`` (C++, GNU, Microsoft)
18041804
* ``__is_polymorphic`` (C++, GNU, Microsoft, Embarcadero)
18051805
* ``__is_reference`` (C++, Embarcadero)
1806-
* ``__is_referenceable`` (C++, GNU, Microsoft, Embarcadero):
1807-
Returns true if a type is referenceable, and false otherwise. A referenceable
1808-
type is a type that's either an object type, a reference type, or an unqualified
1809-
function type. This trait is deprecated and will be removed in Clang 21.
18101806
* ``__is_rvalue_reference`` (C++, Embarcadero)
18111807
* ``__is_same`` (C++, Embarcadero)
18121808
* ``__is_same_as`` (GCC): Synonym for ``__is_same``.

clang/docs/OpenMPSupport.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,8 @@ implementation.
364364
+=============================================================+===========================+===========================+==========================================================================+
365365
| free-agent threads | :none:`unclaimed` | :none:`unclaimed` | |
366366
+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
367+
| threadset clause | :`worked on` | :none:`unclaimed` | |
368+
+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
367369
| Recording of task graphs | :none:`unclaimed` | :none:`unclaimed` | |
368370
+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
369371
| Parallel inductions | :none:`unclaimed` | :none:`unclaimed` | |

clang/docs/ReleaseNotes.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ C/C++ Language Potentially Breaking Changes
4242
C++ Specific Potentially Breaking Changes
4343
-----------------------------------------
4444

45+
- The type trait builtin ``__is_referenceable`` has been removed, since it has
46+
very few users and all the type traits that could benefit from it in the
47+
standard library already have their own bespoke builtins.
48+
4549
ABI Changes in This Version
4650
---------------------------
4751

@@ -259,6 +263,11 @@ Improvements
259263
Moved checkers
260264
^^^^^^^^^^^^^^
261265

266+
- After lots of improvements, the checker ``alpha.security.ArrayBoundV2`` is
267+
renamed to ``security.ArrayBound``. As this checker is stable now, the old
268+
checker ``alpha.security.ArrayBound`` (which was searching for the same kind
269+
of bugs with an different, simpler and less accurate algorithm) is removed.
270+
262271
.. _release-notes-sanitizers:
263272

264273
Sanitizers

clang/docs/analyzer/checkers.rst

Lines changed: 60 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1332,10 +1332,69 @@ security
13321332
13331333
Security related checkers.
13341334
1335+
.. _security-ArrayBound:
1336+
1337+
security.ArrayBound (C, C++)
1338+
""""""""""""""""""""""""""""
1339+
Report out of bounds access to memory that is before the start or after the end
1340+
of the accessed region (array, heap-allocated region, string literal etc.).
1341+
This usually means incorrect indexing, but the checker also detects access via
1342+
the operators ``*`` and ``->``.
1343+
1344+
.. code-block:: c
1345+
1346+
void test_underflow(int x) {
1347+
int buf[100][100];
1348+
if (x < 0)
1349+
buf[0][x] = 1; // warn
1350+
}
1351+
1352+
void test_overflow() {
1353+
int buf[100];
1354+
int *p = buf + 100;
1355+
*p = 1; // warn
1356+
}
1357+
1358+
If checkers like :ref:`unix-Malloc` or :ref:`cplusplus-NewDelete` are enabled
1359+
to model the behavior of ``malloc()``, ``operator new`` and similar
1360+
allocators), then this checker can also reports out of bounds access to
1361+
dynamically allocated memory:
1362+
1363+
.. code-block:: cpp
1364+
1365+
int *test_dynamic() {
1366+
int *mem = new int[100];
1367+
mem[-1] = 42; // warn
1368+
return mem;
1369+
}
1370+
1371+
In uncertain situations (when the checker can neither prove nor disprove that
1372+
overflow occurs), the checker assumes that the the index (more precisely, the
1373+
memory offeset) is within bounds.
1374+
1375+
However, if :ref:`optin-taint-GenericTaint` is enabled and the index/offset is
1376+
tainted (i.e. it is influenced by an untrusted souce), then this checker
1377+
reports the potential out of bounds access:
1378+
1379+
.. code-block:: c
1380+
1381+
void test_with_tainted_index() {
1382+
char s[] = "abc";
1383+
int x = getchar();
1384+
char c = s[x]; // warn: potential out of bounds access with tainted index
1385+
}
1386+
1387+
.. note::
1388+
1389+
This checker is an improved and renamed version of the checker that was
1390+
previously known as ``alpha.security.ArrayBoundV2``. The old checker
1391+
``alpha.security.ArrayBound`` was removed when the (previously
1392+
"experimental") V2 variant became stable enough for regular use.
1393+
13351394
.. _security-cert-env-InvalidPtr:
13361395
13371396
security.cert.env.InvalidPtr
1338-
""""""""""""""""""""""""""""""""""
1397+
""""""""""""""""""""""""""""
13391398
13401399
Corresponds to SEI CERT Rules `ENV31-C <https://wiki.sei.cmu.edu/confluence/display/c/ENV31-C.+Do+not+rely+on+an+environment+pointer+following+an+operation+that+may+invalidate+it>`_ and `ENV34-C <https://wiki.sei.cmu.edu/confluence/display/c/ENV34-C.+Do+not+store+pointers+returned+by+certain+functions>`_.
13411400
@@ -3216,78 +3275,6 @@ Warns against using one vs. many plural pattern in code when generating localize
32163275
alpha.security
32173276
^^^^^^^^^^^^^^
32183277
3219-
.. _alpha-security-ArrayBound:
3220-
3221-
alpha.security.ArrayBound (C)
3222-
"""""""""""""""""""""""""""""
3223-
Warn about buffer overflows (older checker).
3224-
3225-
.. code-block:: c
3226-
3227-
void test() {
3228-
char *s = "";
3229-
char c = s[1]; // warn
3230-
}
3231-
3232-
struct seven_words {
3233-
int c[7];
3234-
};
3235-
3236-
void test() {
3237-
struct seven_words a, *p;
3238-
p = &a;
3239-
p[0] = a;
3240-
p[1] = a;
3241-
p[2] = a; // warn
3242-
}
3243-
3244-
// note: requires unix.Malloc or
3245-
// alpha.unix.MallocWithAnnotations checks enabled.
3246-
void test() {
3247-
int *p = malloc(12);
3248-
p[3] = 4; // warn
3249-
}
3250-
3251-
void test() {
3252-
char a[2];
3253-
int *b = (int*)a;
3254-
b[1] = 3; // warn
3255-
}
3256-
3257-
.. _alpha-security-ArrayBoundV2:
3258-
3259-
alpha.security.ArrayBoundV2 (C)
3260-
"""""""""""""""""""""""""""""""
3261-
Warn about buffer overflows (newer checker).
3262-
3263-
.. code-block:: c
3264-
3265-
void test() {
3266-
char *s = "";
3267-
char c = s[1]; // warn
3268-
}
3269-
3270-
void test() {
3271-
int buf[100];
3272-
int *p = buf;
3273-
p = p + 99;
3274-
p[1] = 1; // warn
3275-
}
3276-
3277-
// note: compiler has internal check for this.
3278-
// Use -Wno-array-bounds to suppress compiler warning.
3279-
void test() {
3280-
int buf[100][100];
3281-
buf[0][-1] = 1; // warn
3282-
}
3283-
3284-
// note: requires optin.taint check turned on.
3285-
void test() {
3286-
char s[] = "abc";
3287-
int x = getchar();
3288-
char c = s[x]; // warn: index is tainted
3289-
}
3290-
32913278
.. _alpha-security-ReturnPtrRange:
32923279
32933280
alpha.security.ReturnPtrRange (C)

clang/include/clang/Basic/TokenKinds.def

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,6 @@ TYPE_TRAIT_1(__is_trivially_equality_comparable, IsTriviallyEqualityComparable,
546546
TYPE_TRAIT_1(__is_bounded_array, IsBoundedArray, KEYCXX)
547547
TYPE_TRAIT_1(__is_unbounded_array, IsUnboundedArray, KEYCXX)
548548
TYPE_TRAIT_1(__is_scoped_enum, IsScopedEnum, KEYCXX)
549-
TYPE_TRAIT_1(__is_referenceable, IsReferenceable, KEYCXX)
550549
TYPE_TRAIT_1(__can_pass_in_regs, CanPassInRegs, KEYCXX)
551550
TYPE_TRAIT_2(__reference_binds_to_temporary, ReferenceBindsToTemporary, KEYCXX)
552551
TYPE_TRAIT_2(__reference_constructs_from_temporary, ReferenceConstructsFromTemporary, KEYCXX)

clang/include/clang/Basic/arm_sme.td

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,11 @@ multiclass ZARead<string n_suffix, string t, string i_prefix, list<ImmCheck> ch>
110110
}
111111
}
112112

113-
defm SVREAD_ZA8 : ZARead<"za8", "cUc", "aarch64_sme_read", [ImmCheck<2, ImmCheck0_0>]>;
113+
defm SVREAD_ZA8 : ZARead<"za8", "cUcm", "aarch64_sme_read", [ImmCheck<2, ImmCheck0_0>]>;
114114
defm SVREAD_ZA16 : ZARead<"za16", "sUshb", "aarch64_sme_read", [ImmCheck<2, ImmCheck0_1>]>;
115115
defm SVREAD_ZA32 : ZARead<"za32", "iUif", "aarch64_sme_read", [ImmCheck<2, ImmCheck0_3>]>;
116116
defm SVREAD_ZA64 : ZARead<"za64", "lUld", "aarch64_sme_read", [ImmCheck<2, ImmCheck0_7>]>;
117-
defm SVREAD_ZA128 : ZARead<"za128", "csilUcUsUiUlhbfd", "aarch64_sme_readq", [ImmCheck<2, ImmCheck0_15>]>;
117+
defm SVREAD_ZA128 : ZARead<"za128", "csilUcUsUiUlmhbfd", "aarch64_sme_readq", [ImmCheck<2, ImmCheck0_15>]>;
118118

119119
////////////////////////////////////////////////////////////////////////////////
120120
// Write horizontal/vertical ZA slices
@@ -131,11 +131,11 @@ multiclass ZAWrite<string n_suffix, string t, string i_prefix, list<ImmCheck> ch
131131
}
132132
}
133133

134-
defm SVWRITE_ZA8 : ZAWrite<"za8", "cUc", "aarch64_sme_write", [ImmCheck<0, ImmCheck0_0>]>;
134+
defm SVWRITE_ZA8 : ZAWrite<"za8", "cUcm", "aarch64_sme_write", [ImmCheck<0, ImmCheck0_0>]>;
135135
defm SVWRITE_ZA16 : ZAWrite<"za16", "sUshb", "aarch64_sme_write", [ImmCheck<0, ImmCheck0_1>]>;
136136
defm SVWRITE_ZA32 : ZAWrite<"za32", "iUif", "aarch64_sme_write", [ImmCheck<0, ImmCheck0_3>]>;
137137
defm SVWRITE_ZA64 : ZAWrite<"za64", "lUld", "aarch64_sme_write", [ImmCheck<0, ImmCheck0_7>]>;
138-
defm SVWRITE_ZA128 : ZAWrite<"za128", "csilUcUsUiUlhbfd", "aarch64_sme_writeq", [ImmCheck<0, ImmCheck0_15>]>;
138+
defm SVWRITE_ZA128 : ZAWrite<"za128", "csilUcUsUiUlmhbfd", "aarch64_sme_writeq", [ImmCheck<0, ImmCheck0_15>]>;
139139

140140
////////////////////////////////////////////////////////////////////////////////
141141
// SME - Zero
@@ -350,7 +350,7 @@ multiclass ZAWrite_VG<string n, string t, string i, list<ImmCheck> checks> {
350350
}
351351

352352
let SMETargetGuard = "sme2" in {
353-
defm SVWRITE_ZA8 : ZAWrite_VG<"za8", "cUc", "aarch64_sme_write", [ImmCheck<0, ImmCheck0_0>]>;
353+
defm SVWRITE_ZA8 : ZAWrite_VG<"za8", "cUcm", "aarch64_sme_write", [ImmCheck<0, ImmCheck0_0>]>;
354354
defm SVWRITE_ZA16 : ZAWrite_VG<"za16", "sUshb", "aarch64_sme_write", [ImmCheck<0, ImmCheck0_1>]>;
355355
defm SVWRITE_ZA32 : ZAWrite_VG<"za32", "iUif", "aarch64_sme_write", [ImmCheck<0, ImmCheck0_3>]>;
356356
defm SVWRITE_ZA64 : ZAWrite_VG<"za64", "lUld", "aarch64_sme_write", [ImmCheck<0, ImmCheck0_7>]>;
@@ -366,7 +366,7 @@ multiclass ZARead_VG<string n, string t, string i, list<ImmCheck> checks> {
366366
}
367367

368368
let SMETargetGuard = "sme2" in {
369-
defm SVREAD_ZA8 : ZARead_VG<"za8", "cUc", "aarch64_sme_read", [ImmCheck<0, ImmCheck0_0>]>;
369+
defm SVREAD_ZA8 : ZARead_VG<"za8", "cUcm", "aarch64_sme_read", [ImmCheck<0, ImmCheck0_0>]>;
370370
defm SVREAD_ZA16 : ZARead_VG<"za16", "sUshb", "aarch64_sme_read", [ImmCheck<0, ImmCheck0_1>]>;
371371
defm SVREAD_ZA32 : ZARead_VG<"za32", "iUif", "aarch64_sme_read", [ImmCheck<0, ImmCheck0_3>]>;
372372
defm SVREAD_ZA64 : ZARead_VG<"za64", "lUld", "aarch64_sme_read", [ImmCheck<0, ImmCheck0_7>]>;
@@ -722,24 +722,24 @@ def IN_STREAMING_MODE : Inst<"__arm_in_streaming_mode", "sv", "Pc", MergeNone,
722722
// lookup table expand four contiguous registers
723723
//
724724
let SMETargetGuard = "sme2" in {
725-
def SVLUTI2_LANE_ZT_X4 : Inst<"svluti2_lane_zt_{d}_x4", "4.di[i", "cUcsUsiUibhf", MergeNone, "aarch64_sme_luti2_lane_zt_x4", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_3>]>;
725+
def SVLUTI2_LANE_ZT_X4 : Inst<"svluti2_lane_zt_{d}_x4", "4.di[i", "cUcsUsiUimbhf", MergeNone, "aarch64_sme_luti2_lane_zt_x4", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_3>]>;
726726
def SVLUTI4_LANE_ZT_X4 : Inst<"svluti4_lane_zt_{d}_x4", "4.di[i", "sUsiUibhf", MergeNone, "aarch64_sme_luti4_lane_zt_x4", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_1>]>;
727727
}
728728

729729
//
730730
// lookup table expand one register
731731
//
732732
let SMETargetGuard = "sme2" in {
733-
def SVLUTI2_LANE_ZT : Inst<"svluti2_lane_zt_{d}", "di[i", "cUcsUsiUibhf", MergeNone, "aarch64_sme_luti2_lane_zt", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_15>]>;
734-
def SVLUTI4_LANE_ZT : Inst<"svluti4_lane_zt_{d}", "di[i", "cUcsUsiUibhf", MergeNone, "aarch64_sme_luti4_lane_zt", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_7>]>;
733+
def SVLUTI2_LANE_ZT : Inst<"svluti2_lane_zt_{d}", "di[i", "cUcsUsiUimbhf", MergeNone, "aarch64_sme_luti2_lane_zt", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_15>]>;
734+
def SVLUTI4_LANE_ZT : Inst<"svluti4_lane_zt_{d}", "di[i", "cUcsUsiUimbhf", MergeNone, "aarch64_sme_luti4_lane_zt", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_7>]>;
735735
}
736736

737737
//
738738
// lookup table expand two contiguous registers
739739
//
740740
let SMETargetGuard = "sme2" in {
741-
def SVLUTI2_LANE_ZT_X2 : Inst<"svluti2_lane_zt_{d}_x2", "2.di[i", "cUcsUsiUibhf", MergeNone, "aarch64_sme_luti2_lane_zt_x2", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_7>]>;
742-
def SVLUTI4_LANE_ZT_X2 : Inst<"svluti4_lane_zt_{d}_x2", "2.di[i", "cUcsUsiUibhf", MergeNone, "aarch64_sme_luti4_lane_zt_x2", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_3>]>;
741+
def SVLUTI2_LANE_ZT_X2 : Inst<"svluti2_lane_zt_{d}_x2", "2.di[i", "cUcsUsiUimbhf", MergeNone, "aarch64_sme_luti2_lane_zt_x2", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_7>]>;
742+
def SVLUTI4_LANE_ZT_X2 : Inst<"svluti4_lane_zt_{d}_x2", "2.di[i", "cUcsUsiUimbhf", MergeNone, "aarch64_sme_luti4_lane_zt_x2", [IsStreaming, IsInZT0], [ImmCheck<0, ImmCheck0_0>, ImmCheck<2, ImmCheck0_3>]>;
743743
}
744744

745745
//
@@ -811,12 +811,12 @@ multiclass ZAReadz<string n_suffix, string vg_num, string t, string i_prefix, li
811811
}
812812
}
813813

814-
defm SVREADZ_ZA8_X2 : ZAReadz<"za8", "2", "cUc", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_0>]>;
814+
defm SVREADZ_ZA8_X2 : ZAReadz<"za8", "2", "cUcm", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_0>]>;
815815
defm SVREADZ_ZA16_X2 : ZAReadz<"za16", "2", "sUshb", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_1>]>;
816816
defm SVREADZ_ZA32_X2 : ZAReadz<"za32", "2", "iUif", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_3>]>;
817817
defm SVREADZ_ZA64_X2 : ZAReadz<"za64", "2", "lUld", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_7>]>;
818818

819-
defm SVREADZ_ZA8_X4 : ZAReadz<"za8", "4", "cUc", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_0>]>;
819+
defm SVREADZ_ZA8_X4 : ZAReadz<"za8", "4", "cUcm", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_0>]>;
820820
defm SVREADZ_ZA16_X4 : ZAReadz<"za16", "4", "sUshb", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_1>]>;
821821
defm SVREADZ_ZA32_X4 : ZAReadz<"za32", "4", "iUif", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_3>]>;
822822
defm SVREADZ_ZA64_X4 : ZAReadz<"za64", "4", "lUld", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_7>]>;
@@ -834,15 +834,15 @@ multiclass ZAReadzSingle<string n_suffix, string t, string i_prefix, list<ImmChe
834834
}
835835
}
836836

837-
defm SVREADZ_ZA8 : ZAReadzSingle<"za8", "cUc", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_0>]>;
837+
defm SVREADZ_ZA8 : ZAReadzSingle<"za8", "cUcm", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_0>]>;
838838
defm SVREADZ_ZA16 : ZAReadzSingle<"za16", "sUshb", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_1>]>;
839839
defm SVREADZ_ZA32 : ZAReadzSingle<"za32", "iUif", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_3>]>;
840840
defm SVREADZ_ZA64 : ZAReadzSingle<"za64", "lUld", "aarch64_sme_readz", [ImmCheck<0, ImmCheck0_7>]>;
841-
defm SVREADZ_ZA128 : ZAReadzSingle<"za128", "csilUcUiUsUlbhfd", "aarch64_sme_readz_q", [ImmCheck<0, ImmCheck0_15>]>;
841+
defm SVREADZ_ZA128 : ZAReadzSingle<"za128", "csilUcUiUsUlmbhfd", "aarch64_sme_readz_q", [ImmCheck<0, ImmCheck0_15>]>;
842842

843843
multiclass ZAReadzArray<string vg_num>{
844844
let SMETargetGuard = "sme2p1" in {
845-
def NAME # _B : SInst<"svreadz_za8_{d}_vg1x" # vg_num, vg_num # "m", "cUc", MergeNone, "aarch64_sme_readz_x" # vg_num, [IsStreaming, IsInOutZA]>;
845+
def NAME # _B : SInst<"svreadz_za8_{d}_vg1x" # vg_num, vg_num # "m", "cUcm", MergeNone, "aarch64_sme_readz_x" # vg_num, [IsStreaming, IsInOutZA]>;
846846
def NAME # _H : SInst<"svreadz_za16_{d}_vg1x" # vg_num, vg_num # "m", "sUsbh", MergeNone, "aarch64_sme_readz_x" # vg_num, [IsStreaming, IsInOutZA]>;
847847
def NAME # _S : SInst<"svreadz_za32_{d}_vg1x" # vg_num, vg_num # "m", "iUif", MergeNone, "aarch64_sme_readz_x" # vg_num, [IsStreaming, IsInOutZA]>;
848848
def NAME # _D : SInst<"svreadz_za64_{d}_vg1x" # vg_num, vg_num # "m", "lUld", MergeNone, "aarch64_sme_readz_x" # vg_num, [IsStreaming, IsInOutZA]>;

clang/include/clang/Basic/arm_sve.td

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2104,7 +2104,7 @@ let SVETargetGuard = "sve2p1", SMETargetGuard = "sme" in {
21042104
def SVSCLAMP : SInst<"svclamp[_{d}]", "dddd", "csil", MergeNone, "aarch64_sve_sclamp", [VerifyRuntimeMode], []>;
21052105
def SVUCLAMP : SInst<"svclamp[_{d}]", "dddd", "UcUsUiUl", MergeNone, "aarch64_sve_uclamp", [VerifyRuntimeMode], []>;
21062106

2107-
defm SVREVD : SInstZPZ<"svrevd", "csilUcUsUiUlbhfd", "aarch64_sve_revd">;
2107+
defm SVREVD : SInstZPZ<"svrevd", "csilUcUsUiUlmbhfd", "aarch64_sve_revd">;
21082108
}
21092109

21102110
let SVETargetGuard = "sve2p1", SMETargetGuard = "sme2" in {
@@ -2223,8 +2223,8 @@ let SVETargetGuard = InvalidMode, SMETargetGuard = "sme2" in {
22232223
def SVADD_SINGLE_X4 : SInst<"svadd[_single_{d}_x4]", "44d", "cUcsUsiUilUl", MergeNone, "aarch64_sve_add_single_x4", [IsStreaming], []>;
22242224

22252225
// 2-way and 4-way selects
2226-
def SVSEL_X2 : SInst<"svsel[_{d}_x2]", "2}22", "cUcsUsiUilUlbhfd", MergeNone, "aarch64_sve_sel_x2", [IsStreaming], []>;
2227-
def SVSEL_X4 : SInst<"svsel[_{d}_x4]", "4}44", "cUcsUsiUilUlbhfd", MergeNone, "aarch64_sve_sel_x4", [IsStreaming], []>;
2226+
def SVSEL_X2 : SInst<"svsel[_{d}_x2]", "2}22", "cUcsUsiUilUlmbhfd", MergeNone, "aarch64_sve_sel_x2", [IsStreaming], []>;
2227+
def SVSEL_X4 : SInst<"svsel[_{d}_x4]", "4}44", "cUcsUsiUilUlmbhfd", MergeNone, "aarch64_sve_sel_x4", [IsStreaming], []>;
22282228

22292229
// SRSHL / URSHL
22302230
def SVSRSHL_SINGLE_X2 : SInst<"svrshl[_single_{d}_x2]", "22d", "csil", MergeNone, "aarch64_sve_srshl_single_x2", [IsStreaming], []>;
@@ -2402,15 +2402,15 @@ let SVETargetGuard = InvalidMode, SMETargetGuard = "sme2" in {
24022402
//
24032403

24042404
let SVETargetGuard = InvalidMode, SMETargetGuard = "sme2" in {
2405-
def SVZIP_X2 : SInst<"svzip[_{d}_x2]", "22", "cUcsUsiUilUlbhfd", MergeNone, "aarch64_sve_zip_x2", [IsStreaming], []>;
2406-
def SVZIPQ_X2 : SInst<"svzipq[_{d}_x2]", "22", "cUcsUsiUilUlbhfd", MergeNone, "aarch64_sve_zipq_x2", [IsStreaming], []>;
2407-
def SVZIP_X4 : SInst<"svzip[_{d}_x4]", "44", "cUcsUsiUilUlbhfd", MergeNone, "aarch64_sve_zip_x4", [IsStreaming], []>;
2408-
def SVZIPQ_X4 : SInst<"svzipq[_{d}_x4]", "44", "cUcsUsiUilUlbhfd", MergeNone, "aarch64_sve_zipq_x4", [IsStreaming], []>;
2409-
2410-
def SVUZP_X2 : SInst<"svuzp[_{d}_x2]", "22", "cUcsUsiUilUlbhfd", MergeNone, "aarch64_sve_uzp_x2", [IsStreaming], []>;
2411-
def SVUZPQ_X2 : SInst<"svuzpq[_{d}_x2]", "22", "cUcsUsiUilUlbhfd", MergeNone, "aarch64_sve_uzpq_x2", [IsStreaming], []>;
2412-
def SVUZP_X4 : SInst<"svuzp[_{d}_x4]", "44", "cUcsUsiUilUlbhfd", MergeNone, "aarch64_sve_uzp_x4", [IsStreaming], []>;
2413-
def SVUZPQ_X4 : SInst<"svuzpq[_{d}_x4]", "44", "cUcsUsiUilUlbhfd", MergeNone, "aarch64_sve_uzpq_x4", [IsStreaming], []>;
2405+
def SVZIP_X2 : SInst<"svzip[_{d}_x2]", "22", "cUcsUsiUilUlmbhfd", MergeNone, "aarch64_sve_zip_x2", [IsStreaming], []>;
2406+
def SVZIPQ_X2 : SInst<"svzipq[_{d}_x2]", "22", "cUcsUsiUilUlmbhfd", MergeNone, "aarch64_sve_zipq_x2", [IsStreaming], []>;
2407+
def SVZIP_X4 : SInst<"svzip[_{d}_x4]", "44", "cUcsUsiUilUlmbhfd", MergeNone, "aarch64_sve_zip_x4", [IsStreaming], []>;
2408+
def SVZIPQ_X4 : SInst<"svzipq[_{d}_x4]", "44", "cUcsUsiUilUlmbhfd", MergeNone, "aarch64_sve_zipq_x4", [IsStreaming], []>;
2409+
2410+
def SVUZP_X2 : SInst<"svuzp[_{d}_x2]", "22", "cUcsUsiUilUlmbhfd", MergeNone, "aarch64_sve_uzp_x2", [IsStreaming], []>;
2411+
def SVUZPQ_X2 : SInst<"svuzpq[_{d}_x2]", "22", "cUcsUsiUilUlmbhfd", MergeNone, "aarch64_sve_uzpq_x2", [IsStreaming], []>;
2412+
def SVUZP_X4 : SInst<"svuzp[_{d}_x4]", "44", "cUcsUsiUilUlmbhfd", MergeNone, "aarch64_sve_uzp_x4", [IsStreaming], []>;
2413+
def SVUZPQ_X4 : SInst<"svuzpq[_{d}_x4]", "44", "cUcsUsiUilUlmbhfd", MergeNone, "aarch64_sve_uzpq_x4", [IsStreaming], []>;
24142414
}
24152415

24162416
//

0 commit comments

Comments
 (0)