Skip to content

Commit ae8ad86

Browse files
authored
[Clang][AArch64] Model ZT0 table using inaccessible memory (#133727)
This patch changes how ZT0 table is modelled at LLVM-IR level. Currently accesses to ZT0 are represented at LLVM-IR level as memory reads and writes. This patch changes that and models them as purely Inaccessible memory accesses without any unmodeled side-effects.
1 parent 0509932 commit ae8ad86

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

llvm/include/llvm/IR/IntrinsicsAArch64.td

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3031,11 +3031,11 @@ let TargetPrefix = "aarch64" in {
30313031

30323032
def int_aarch64_sme_write_lane_zt
30333033
: DefaultAttrsIntrinsic<[], [llvm_i32_ty, llvm_anyvector_ty, llvm_i32_ty],
3034-
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrNoMem, IntrHasSideEffects]>;
3034+
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrInaccessibleMemOnly]>;
30353035

30363036
def int_aarch64_sme_write_zt
30373037
: DefaultAttrsIntrinsic<[], [llvm_i32_ty, llvm_anyvector_ty],
3038-
[ImmArg<ArgIndex<0>>, IntrNoMem, IntrHasSideEffects]>;
3038+
[ImmArg<ArgIndex<0>>, IntrInaccessibleMemOnly, IntrWriteMem]>;
30393039

30403040

30413041
def int_aarch64_sme_zero : DefaultAttrsIntrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>]>;
@@ -3851,50 +3851,50 @@ let TargetPrefix = "aarch64" in {
38513851
def int_aarch64_sve_sel_x4 : SVE2_VG4_Sel_Intrinsic;
38523852

38533853
class SME_LDR_STR_ZT_Intrinsic
3854-
: DefaultAttrsIntrinsic<[], [llvm_i32_ty, llvm_ptr_ty]>;
3854+
: DefaultAttrsIntrinsic<[], [llvm_i32_ty, llvm_ptr_ty], [IntrInaccessibleMemOrArgMemOnly]>;
38553855
def int_aarch64_sme_ldr_zt : SME_LDR_STR_ZT_Intrinsic;
38563856
def int_aarch64_sme_str_zt : SME_LDR_STR_ZT_Intrinsic;
38573857

38583858
//
38593859
// Zero ZT0
38603860
//
3861-
def int_aarch64_sme_zero_zt : DefaultAttrsIntrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>, IntrWriteMem]>;
3861+
def int_aarch64_sme_zero_zt : DefaultAttrsIntrinsic<[], [llvm_i32_ty], [ImmArg<ArgIndex<0>>, IntrInaccessibleMemOnly, IntrWriteMem]>;
38623862

38633863
//
38643864
// Lookup table expand one register
38653865
//
38663866
def int_aarch64_sme_luti2_lane_zt
38673867
: DefaultAttrsIntrinsic<[llvm_anyvector_ty], [llvm_i32_ty, llvm_nxv16i8_ty, llvm_i32_ty],
3868-
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrReadMem]>;
3868+
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrInaccessibleMemOnly, IntrReadMem]>;
38693869
def int_aarch64_sme_luti4_lane_zt
38703870
: DefaultAttrsIntrinsic<[llvm_anyvector_ty], [llvm_i32_ty, llvm_nxv16i8_ty, llvm_i32_ty],
3871-
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrReadMem]>;
3871+
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrInaccessibleMemOnly, IntrReadMem]>;
38723872

38733873
// Lookup table expand two registers
38743874
//
38753875
def int_aarch64_sme_luti2_lane_zt_x2
38763876
: DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>], [llvm_i32_ty, llvm_nxv16i8_ty, llvm_i32_ty],
3877-
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrReadMem]>;
3877+
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrInaccessibleMemOnly, IntrReadMem]>;
38783878
def int_aarch64_sme_luti4_lane_zt_x2
38793879
: DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>], [llvm_i32_ty, llvm_nxv16i8_ty, llvm_i32_ty],
3880-
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrReadMem]>;
3881-
3880+
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrInaccessibleMemOnly, IntrReadMem]>;
3881+
38823882
//
38833883
// Lookup table expand four registers
38843884
//
38853885
def int_aarch64_sme_luti2_lane_zt_x4
38863886
: DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>],
38873887
[llvm_i32_ty, llvm_nxv16i8_ty, llvm_i32_ty],
3888-
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrReadMem]>;
3888+
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrInaccessibleMemOnly, IntrReadMem]>;
38893889
def int_aarch64_sme_luti4_lane_zt_x4
38903890
: DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>],
38913891
[llvm_i32_ty, llvm_nxv16i8_ty, llvm_i32_ty],
3892-
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrReadMem]>;
3892+
[ImmArg<ArgIndex<0>>, ImmArg<ArgIndex<2>>, IntrInaccessibleMemOnly, IntrReadMem]>;
38933893

38943894
def int_aarch64_sme_luti4_zt_x4
38953895
: DefaultAttrsIntrinsic<[llvm_anyvector_ty, LLVMMatchType<0>, LLVMMatchType<0>, LLVMMatchType<0>],
38963896
[llvm_i32_ty, llvm_nxv16i8_ty, llvm_nxv16i8_ty],
3897-
[ImmArg<ArgIndex<0>>, IntrNoMem, IntrHasSideEffects]>;
3897+
[ImmArg<ArgIndex<0>>, IntrInaccessibleMemOnly, IntrReadMem]>;
38983898

38993899

39003900
//

0 commit comments

Comments
 (0)