@@ -2940,7 +2940,7 @@ def int_aarch64_sve_whilewr_d : SVE2_CONFLICT_DETECT_Intrinsic;
29402940let TargetPrefix = "aarch64" in {
29412941 class SME_Load_Store_Intrinsic<LLVMType pred_ty>
29422942 : DefaultAttrsIntrinsic<[],
2943- [pred_ty, llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<2>>]>;
2943+ [pred_ty, llvm_ptr_ty, llvm_i32_ty, llvm_i32_ty], [IntrInaccessibleMemOrArgMemOnly, ImmArg<ArgIndex<2>>]>;
29442944
29452945 // Loads
29462946 def int_aarch64_sme_ld1b_horiz : SME_Load_Store_Intrinsic<llvm_nxv16i1_ty>;
@@ -2968,18 +2968,18 @@ let TargetPrefix = "aarch64" in {
29682968
29692969 // Spill + fill
29702970 class SME_LDR_STR_ZA_Intrinsic
2971- : DefaultAttrsIntrinsic<[], [llvm_i32_ty, llvm_ptr_ty, llvm_i32_ty]>;
2971+ : DefaultAttrsIntrinsic<[], [llvm_i32_ty, llvm_ptr_ty, llvm_i32_ty], [IntrInaccessibleMemOrArgMemOnly] >;
29722972 def int_aarch64_sme_ldr : SME_LDR_STR_ZA_Intrinsic;
29732973 def int_aarch64_sme_str : SME_LDR_STR_ZA_Intrinsic;
29742974
29752975 class SME_TileToVector_Intrinsic
29762976 : DefaultAttrsIntrinsic<[llvm_anyvector_ty],
29772977 [LLVMMatchType<0>, LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
2978- llvm_i32_ty, llvm_i32_ty], [ImmArg<ArgIndex<2>>]>;
2978+ llvm_i32_ty, llvm_i32_ty], [IntrReadMem, IntrInaccessibleMemOnly, ImmArg<ArgIndex<2>>]>;
29792979 class SME_VectorToTile_Intrinsic
29802980 : DefaultAttrsIntrinsic<[],
29812981 [llvm_i32_ty, llvm_i32_ty, LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
2982- llvm_anyvector_ty], [ImmArg<ArgIndex<0>>]>;
2982+ llvm_anyvector_ty], [IntrInaccessibleMemOnly, ImmArg<ArgIndex<0>>]>;
29832983
29842984 def int_aarch64_sme_read_horiz : SME_TileToVector_Intrinsic;
29852985 def int_aarch64_sme_read_vert : SME_TileToVector_Intrinsic;
@@ -2994,13 +2994,13 @@ let TargetPrefix = "aarch64" in {
29942994 class SME_MOVAZ_TileToVector_X2_Intrinsic
29952995 : DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>],
29962996 [llvm_i32_ty, llvm_i32_ty],
2997- [IntrNoMem, IntrHasSideEffects , ImmArg<ArgIndex<0>>]>;
2997+ [IntrInaccessibleMemOnly , ImmArg<ArgIndex<0>>]>;
29982998
29992999 class SME_MOVAZ_TileToVector_X4_Intrinsic
30003000 : DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>,
30013001 LLVMMatchType<0>,LLVMMatchType<0>],
30023002 [llvm_i32_ty, llvm_i32_ty],
3003- [IntrNoMem, IntrHasSideEffects , ImmArg<ArgIndex<0>>]>;
3003+ [IntrInaccessibleMemOnly , ImmArg<ArgIndex<0>>]>;
30043004
30053005 def int_aarch64_sme_readz_horiz_x2 : SME_MOVAZ_TileToVector_X2_Intrinsic;
30063006 def int_aarch64_sme_readz_vert_x2 : SME_MOVAZ_TileToVector_X2_Intrinsic;
@@ -3011,7 +3011,7 @@ let TargetPrefix = "aarch64" in {
30113011 class SME_MOVAZ_TileToVector_Intrinsic
30123012 : DefaultAttrsIntrinsic<[llvm_anyvector_ty],
30133013 [llvm_i32_ty, llvm_i32_ty],
3014- [IntrNoMem, IntrHasSideEffects , ImmArg<ArgIndex<0>>]>;
3014+ [IntrInaccessibleMemOnly , ImmArg<ArgIndex<0>>]>;
30153015
30163016 def int_aarch64_sme_readz_horiz : SME_MOVAZ_TileToVector_Intrinsic;
30173017 def int_aarch64_sme_readz_vert : SME_MOVAZ_TileToVector_Intrinsic;
@@ -3022,12 +3022,12 @@ let TargetPrefix = "aarch64" in {
30223022 def int_aarch64_sme_readz_x2
30233023 : DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>],
30243024 [llvm_i32_ty],
3025- [IntrNoMem, IntrHasSideEffects ]>;
3025+ [IntrInaccessibleMemOnly ]>;
30263026
30273027 def int_aarch64_sme_readz_x4
30283028 : DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>],
30293029 [llvm_i32_ty],
3030- [IntrNoMem, IntrHasSideEffects ]>;
3030+ [IntrInaccessibleMemOnly ]>;
30313031
30323032 def int_aarch64_sme_write_lane_zt
30333033 : DefaultAttrsIntrinsic<[], [llvm_i32_ty, llvm_anyvector_ty, llvm_i32_ty],
@@ -3038,7 +3038,7 @@ let TargetPrefix = "aarch64" in {
30383038 [ImmArg<ArgIndex<0>>, IntrNoMem, IntrHasSideEffects]>;
30393039
30403040
3041- def int_aarch64_sme_zero : DefaultAttrsIntrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
3041+ def int_aarch64_sme_zero : DefaultAttrsIntrinsic<[], [llvm_i32_ty], [IntrWriteMem, IntrInaccessibleMemOnly, ImmArg<ArgIndex<0>>]>;
30423042 def int_aarch64_sme_in_streaming_mode : DefaultAttrsIntrinsic<[llvm_i1_ty], [], [IntrNoMem]>, ClangBuiltin<"__builtin_arm_in_streaming_mode">;
30433043
30443044 class SME_OuterProduct_Intrinsic
@@ -3047,7 +3047,7 @@ let TargetPrefix = "aarch64" in {
30473047 LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
30483048 LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
30493049 LLVMMatchType<0>,
3050- llvm_anyvector_ty], [ImmArg<ArgIndex<0>>]>;
3050+ llvm_anyvector_ty], [IntrInaccessibleMemOnly, ImmArg<ArgIndex<0>>]>;
30513051
30523052 def int_aarch64_sme_mopa : SME_OuterProduct_Intrinsic;
30533053 def int_aarch64_sme_mops : SME_OuterProduct_Intrinsic;
@@ -3069,7 +3069,7 @@ let TargetPrefix = "aarch64" in {
30693069 [llvm_i32_ty,
30703070 LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
30713071 LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
3072- llvm_anyvector_ty], [ImmArg<ArgIndex<0>>]>;
3072+ llvm_anyvector_ty], [IntrInaccessibleMemOnly, ImmArg<ArgIndex<0>>]>;
30733073
30743074 def int_aarch64_sme_addha : SME_AddVectorToTile_Intrinsic;
30753075 def int_aarch64_sme_addva : SME_AddVectorToTile_Intrinsic;
@@ -3189,56 +3189,56 @@ let TargetPrefix = "aarch64" in {
31893189 : DefaultAttrsIntrinsic<[],
31903190 [llvm_i32_ty,
31913191 llvm_anyvector_ty, LLVMMatchType<0>],
3192- []>;
3192+ [IntrInaccessibleMemOnly ]>;
31933193
31943194 class SME2_Matrix_ArrayVector_VG2_Multi_Single_Intrinsic
31953195 : DefaultAttrsIntrinsic<[],
31963196 [llvm_i32_ty,
31973197 llvm_anyvector_ty, LLVMMatchType<0>,
31983198 LLVMMatchType<0>],
3199- []>;
3199+ [IntrInaccessibleMemOnly ]>;
32003200
32013201 class SME2_Matrix_ArrayVector_VG4_Multi_Single_Intrinsic
32023202 : DefaultAttrsIntrinsic<[],
32033203 [llvm_i32_ty,
32043204 llvm_anyvector_ty, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>,
32053205 LLVMMatchType<0>],
3206- []>;
3206+ [IntrInaccessibleMemOnly ]>;
32073207
32083208 class SME2_Matrix_ArrayVector_VG2_Multi_Multi_Intrinsic
32093209 : DefaultAttrsIntrinsic<[],
32103210 [llvm_i32_ty,
32113211 llvm_anyvector_ty, LLVMMatchType<0>,
32123212 LLVMMatchType<0>, LLVMMatchType<0>],
3213- []>;
3213+ [IntrInaccessibleMemOnly ]>;
32143214
32153215 class SME2_Matrix_ArrayVector_VG4_Multi_Multi_Intrinsic
32163216 : DefaultAttrsIntrinsic<[],
32173217 [llvm_i32_ty,
32183218 llvm_anyvector_ty, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>,
32193219 LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>],
3220- []>;
3220+ [IntrInaccessibleMemOnly ]>;
32213221
32223222 class SME2_Matrix_ArrayVector_Single_Index_Intrinsic
32233223 : DefaultAttrsIntrinsic<[],
32243224 [llvm_i32_ty,
32253225 llvm_anyvector_ty,
32263226 LLVMMatchType<0>, llvm_i32_ty],
3227- [ImmArg<ArgIndex<3>>]>;
3227+ [IntrInaccessibleMemOnly, ImmArg<ArgIndex<3>>]>;
32283228
32293229 class SME2_Matrix_ArrayVector_VG2_Multi_Index_Intrinsic
32303230 : DefaultAttrsIntrinsic<[],
32313231 [llvm_i32_ty,
32323232 llvm_anyvector_ty, LLVMMatchType<0>,
32333233 LLVMMatchType<0>, llvm_i32_ty],
3234- [ImmArg<ArgIndex<4>>]>;
3234+ [IntrInaccessibleMemOnly, ImmArg<ArgIndex<4>>]>;
32353235
32363236 class SME2_Matrix_ArrayVector_VG4_Multi_Index_Intrinsic
32373237 : DefaultAttrsIntrinsic<[],
32383238 [llvm_i32_ty,
32393239 llvm_anyvector_ty, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>,
32403240 LLVMMatchType<0>, llvm_i32_ty],
3241- [ImmArg<ArgIndex<6>>]>;
3241+ [IntrInaccessibleMemOnly, ImmArg<ArgIndex<6>>]>;
32423242
32433243 class SME2_VG2_Multi_Imm_Intrinsic
32443244 : DefaultAttrsIntrinsic<[LLVMSubdivide2VectorType<0>],
@@ -3257,14 +3257,14 @@ let TargetPrefix = "aarch64" in {
32573257 : DefaultAttrsIntrinsic<[],
32583258 [llvm_i32_ty,
32593259 llvm_anyvector_ty, LLVMMatchType<0>],
3260- []>;
3260+ [IntrWriteMem, IntrInaccessibleMemOnly ]>;
32613261
32623262 class SME2_ZA_Write_VG4_Intrinsic
32633263 : DefaultAttrsIntrinsic<[],
32643264 [llvm_i32_ty,
32653265 llvm_anyvector_ty, LLVMMatchType<0>,
32663266 LLVMMatchType<0>, LLVMMatchType<0>],
3267- []>;
3267+ [IntrWriteMem, IntrInaccessibleMemOnly ]>;
32683268
32693269 class SME2_VG2_Multi_Single_Intrinsic
32703270 : DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>],
@@ -3353,50 +3353,50 @@ let TargetPrefix = "aarch64" in {
33533353 class SME2_ZA_ArrayVector_Read_VG2_Intrinsic
33543354 : DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>],
33553355 [llvm_i32_ty],
3356- []>;
3356+ [IntrReadMem, IntrInaccessibleMemOnly ]>;
33573357
33583358 class SME2_ZA_ArrayVector_Read_VG4_Intrinsic
33593359 : DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>,
33603360 LLVMMatchType<0>, LLVMMatchType<0>],
33613361 [llvm_i32_ty],
3362- []>;
3362+ [IntrReadMem, IntrInaccessibleMemOnly ]>;
33633363
33643364 class SME2_Matrix_TileVector_Read_VG2_Intrinsic
33653365 : DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>],
33663366 [llvm_i32_ty, llvm_i32_ty],
3367- []>;
3367+ [IntrReadMem, IntrInaccessibleMemOnly ]>;
33683368
33693369 class SME2_Matrix_TileVector_Read_VG4_Intrinsic
33703370 : DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>,
33713371 LLVMMatchType<0>, LLVMMatchType<0>],
33723372 [llvm_i32_ty, llvm_i32_ty],
3373- []>;
3373+ [IntrReadMem, IntrInaccessibleMemOnly ]>;
33743374
33753375 class SME2_ZA_ArrayVector_Write_VG2_Intrinsic
33763376 : DefaultAttrsIntrinsic<[],
33773377 [llvm_i32_ty,
33783378 llvm_anyvector_ty, LLVMMatchType<0>],
3379- []>;
3379+ [IntrWriteMem, IntrInaccessibleMemOnly ]>;
33803380
33813381 class SME2_ZA_ArrayVector_Write_VG4_Intrinsic
33823382 : DefaultAttrsIntrinsic<[],
33833383 [llvm_i32_ty,
33843384 llvm_anyvector_ty, LLVMMatchType<0>,
33853385 LLVMMatchType<0>, LLVMMatchType<0>],
3386- []>;
3386+ [IntrWriteMem, IntrInaccessibleMemOnly ]>;
33873387
33883388 class SME2_Matrix_TileVector_Write_VG2_Intrinsic
33893389 : DefaultAttrsIntrinsic<[],
33903390 [llvm_i32_ty, llvm_i32_ty,
33913391 llvm_anyvector_ty, LLVMMatchType<0>],
3392- [ImmArg<ArgIndex<0>>]>;
3392+ [IntrWriteMem, IntrInaccessibleMemOnly, ImmArg<ArgIndex<0>>]>;
33933393
33943394 class SME2_Matrix_TileVector_Write_VG4_Intrinsic
33953395 : DefaultAttrsIntrinsic<[],
33963396 [llvm_i32_ty, llvm_i32_ty,
33973397 llvm_anyvector_ty, LLVMMatchType<0>,
33983398 LLVMMatchType<0>, LLVMMatchType<0>],
3399- [ImmArg<ArgIndex<0>>]>;
3399+ [IntrWriteMem, IntrInaccessibleMemOnly, ImmArg<ArgIndex<0>>]>;
34003400
34013401 class SME2_VG2_Multi_Single_Single_Intrinsic
34023402 : DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>],
@@ -3562,7 +3562,7 @@ let TargetPrefix = "aarch64" in {
35623562 // Multi-vector zeroing
35633563
35643564 foreach vg = ["vg1x2", "vg1x4", "vg2x1", "vg2x2", "vg2x4", "vg4x1", "vg4x2", "vg4x4"] in {
3565- def int_aarch64_sme_zero_za64_ # vg : DefaultAttrsIntrinsic<[], [llvm_i32_ty], [IntrNoMem, IntrHasSideEffects ]>;
3565+ def int_aarch64_sme_zero_za64_ # vg : DefaultAttrsIntrinsic<[], [llvm_i32_ty], [IntrWriteMem, IntrInaccessibleMemOnly ]>;
35663566 }
35673567
35683568 // Multi-vector signed saturating doubling multiply high
@@ -4002,57 +4002,57 @@ let TargetPrefix = "aarch64" in {
40024002 [llvm_i32_ty,
40034003 llvm_nxv16i1_ty, llvm_nxv16i1_ty,
40044004 llvm_nxv16i8_ty, llvm_nxv16i8_ty],
4005- [ImmArg<ArgIndex<0>>, IntrInaccessibleMemOnly, IntrHasSideEffects ]>;
4005+ [ImmArg<ArgIndex<0>>, IntrInaccessibleMemOnly]>;
40064006
40074007 class SME_FP8_ZA_LANE_VGx1_Intrinsic
40084008 : DefaultAttrsIntrinsic<[], [llvm_i32_ty,
40094009 llvm_nxv16i8_ty,
40104010 llvm_nxv16i8_ty,
40114011 llvm_i32_ty],
4012- [IntrInaccessibleMemOnly, IntrHasSideEffects, ImmArg<ArgIndex<3>>]>;
4012+ [IntrInaccessibleMemOnly, ImmArg<ArgIndex<3>>]>;
40134013
40144014 class SME_FP8_ZA_LANE_VGx2_Intrinsic
40154015 : DefaultAttrsIntrinsic<[], [llvm_i32_ty,
40164016 llvm_nxv16i8_ty, llvm_nxv16i8_ty,
40174017 llvm_nxv16i8_ty,
40184018 llvm_i32_ty],
4019- [IntrInaccessibleMemOnly, IntrHasSideEffects, ImmArg<ArgIndex<4>>]>;
4019+ [IntrInaccessibleMemOnly, ImmArg<ArgIndex<4>>]>;
40204020
40214021 class SME_FP8_ZA_LANE_VGx4_Intrinsic
40224022 : DefaultAttrsIntrinsic<[], [llvm_i32_ty,
40234023 llvm_nxv16i8_ty, llvm_nxv16i8_ty, llvm_nxv16i8_ty, llvm_nxv16i8_ty,
40244024 llvm_nxv16i8_ty,
40254025 llvm_i32_ty],
4026- [IntrInaccessibleMemOnly, IntrHasSideEffects, ImmArg<ArgIndex<6>>]>;
4026+ [IntrInaccessibleMemOnly, ImmArg<ArgIndex<6>>]>;
40274027 class SME_FP8_ZA_SINGLE_VGx1_Intrinsic
40284028 : DefaultAttrsIntrinsic<[], [llvm_i32_ty,
40294029 llvm_nxv16i8_ty,
40304030 llvm_nxv16i8_ty],
4031- [IntrInaccessibleMemOnly, IntrHasSideEffects ]>;
4031+ [IntrInaccessibleMemOnly]>;
40324032
40334033 class SME_FP8_ZA_SINGLE_VGx2_Intrinsic
40344034 : DefaultAttrsIntrinsic<[], [llvm_i32_ty,
40354035 llvm_nxv16i8_ty, llvm_nxv16i8_ty,
40364036 llvm_nxv16i8_ty],
4037- [IntrInaccessibleMemOnly, IntrHasSideEffects ]>;
4037+ [IntrInaccessibleMemOnly]>;
40384038
40394039 class SME_FP8_ZA_SINGLE_VGx4_Intrinsic
40404040 : DefaultAttrsIntrinsic<[], [llvm_i32_ty,
40414041 llvm_nxv16i8_ty, llvm_nxv16i8_ty, llvm_nxv16i8_ty, llvm_nxv16i8_ty,
40424042 llvm_nxv16i8_ty],
4043- [IntrInaccessibleMemOnly, IntrHasSideEffects ]>;
4043+ [IntrInaccessibleMemOnly]>;
40444044
40454045 class SME_FP8_ZA_MULTI_VGx2_Intrinsic
40464046 : DefaultAttrsIntrinsic<[], [llvm_i32_ty,
40474047 llvm_nxv16i8_ty, llvm_nxv16i8_ty,
40484048 llvm_nxv16i8_ty, llvm_nxv16i8_ty],
4049- [IntrInaccessibleMemOnly, IntrHasSideEffects ]>;
4049+ [IntrInaccessibleMemOnly]>;
40504050
40514051 class SME_FP8_ZA_MULTI_VGx4_Intrinsic
40524052 : DefaultAttrsIntrinsic<[], [llvm_i32_ty,
40534053 llvm_nxv16i8_ty, llvm_nxv16i8_ty, llvm_nxv16i8_ty, llvm_nxv16i8_ty,
40544054 llvm_nxv16i8_ty, llvm_nxv16i8_ty, llvm_nxv16i8_ty, llvm_nxv16i8_ty],
4055- [IntrInaccessibleMemOnly, IntrHasSideEffects ]>;
4055+ [IntrInaccessibleMemOnly]>;
40564056 //
40574057 // CVT from FP8 to half-precision/BFloat16 multi-vector
40584058 //
0 commit comments