@@ -147,15 +147,17 @@ let TargetPrefix = "riscv" in {
147
147
class RISCVUSMLoad
148
148
: DefaultAttrsIntrinsic<[llvm_anyvector_ty],
149
149
[llvm_ptr_ty, llvm_anyint_ty],
150
- [NoCapture<ArgIndex<0>>, IntrReadMem]>, RISCVVIntrinsic {
150
+ [NoCapture<ArgIndex<0>>, IntrReadMem, IntrArgMemOnly]>,
151
+ RISCVVIntrinsic {
151
152
let VLOperand = 1;
152
153
}
153
154
// For unit stride load
154
155
// Input: (passthru, pointer, vl)
155
156
class RISCVUSLoad
156
157
: DefaultAttrsIntrinsic<[llvm_anyvector_ty],
157
158
[LLVMMatchType<0>, llvm_ptr_ty, llvm_anyint_ty],
158
- [NoCapture<ArgIndex<1>>, IntrReadMem]>, RISCVVIntrinsic {
159
+ [NoCapture<ArgIndex<1>>, IntrReadMem, IntrArgMemOnly]>,
160
+ RISCVVIntrinsic {
159
161
let VLOperand = 2;
160
162
}
161
163
// For unit stride fault-only-first load
@@ -177,7 +179,8 @@ let TargetPrefix = "riscv" in {
177
179
[LLVMMatchType<0>, llvm_ptr_ty,
178
180
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
179
181
llvm_anyint_ty, LLVMMatchType<1>],
180
- [NoCapture<ArgIndex<1>>, ImmArg<ArgIndex<4>>, IntrReadMem]>,
182
+ [NoCapture<ArgIndex<1>>, ImmArg<ArgIndex<4>>, IntrReadMem,
183
+ IntrArgMemOnly]>,
181
184
RISCVVIntrinsic {
182
185
let VLOperand = 3;
183
186
}
@@ -239,7 +242,8 @@ let TargetPrefix = "riscv" in {
239
242
class RISCVUSStore
240
243
: DefaultAttrsIntrinsic<[],
241
244
[llvm_anyvector_ty, llvm_ptr_ty, llvm_anyint_ty],
242
- [NoCapture<ArgIndex<1>>, IntrWriteMem]>, RISCVVIntrinsic {
245
+ [NoCapture<ArgIndex<1>>, IntrWriteMem, IntrArgMemOnly]>,
246
+ RISCVVIntrinsic {
243
247
let VLOperand = 2;
244
248
}
245
249
// For unit stride store with mask
@@ -249,7 +253,8 @@ let TargetPrefix = "riscv" in {
249
253
[llvm_anyvector_ty, llvm_ptr_ty,
250
254
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
251
255
llvm_anyint_ty],
252
- [NoCapture<ArgIndex<1>>, IntrWriteMem]>, RISCVVIntrinsic {
256
+ [NoCapture<ArgIndex<1>>, IntrWriteMem, IntrArgMemOnly]>,
257
+ RISCVVIntrinsic {
253
258
let VLOperand = 3;
254
259
}
255
260
// For strided store
@@ -992,7 +997,8 @@ let TargetPrefix = "riscv" in {
992
997
!add(nf, -1))),
993
998
!listconcat(!listsplat(LLVMMatchType<0>, nf),
994
999
[llvm_ptr_ty, llvm_anyint_ty]),
995
- [NoCapture<ArgIndex<nf>>, IntrReadMem]>, RISCVVIntrinsic {
1000
+ [NoCapture<ArgIndex<nf>>, IntrReadMem, IntrArgMemOnly]>,
1001
+ RISCVVIntrinsic {
996
1002
let VLOperand = !add(nf, 1);
997
1003
}
998
1004
// For unit stride segment load with mask
@@ -1004,8 +1010,9 @@ let TargetPrefix = "riscv" in {
1004
1010
[llvm_ptr_ty,
1005
1011
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
1006
1012
llvm_anyint_ty, LLVMMatchType<1>]),
1007
- [ImmArg<ArgIndex<!add(nf, 3)>>, NoCapture<ArgIndex<nf>>, IntrReadMem]>,
1008
- RISCVVIntrinsic {
1013
+ [ImmArg<ArgIndex<!add(nf, 3)>>, NoCapture<ArgIndex<nf>>,
1014
+ IntrReadMem, IntrArgMemOnly]>,
1015
+ RISCVVIntrinsic {
1009
1016
let VLOperand = !add(nf, 2);
1010
1017
}
1011
1018
@@ -1096,7 +1103,8 @@ let TargetPrefix = "riscv" in {
1096
1103
!listconcat([llvm_anyvector_ty],
1097
1104
!listsplat(LLVMMatchType<0>, !add(nf, -1)),
1098
1105
[llvm_ptr_ty, llvm_anyint_ty]),
1099
- [NoCapture<ArgIndex<nf>>, IntrWriteMem]>, RISCVVIntrinsic {
1106
+ [NoCapture<ArgIndex<nf>>, IntrWriteMem, IntrArgMemOnly]>,
1107
+ RISCVVIntrinsic {
1100
1108
let VLOperand = !add(nf, 1);
1101
1109
}
1102
1110
// For unit stride segment store with mask
@@ -1108,7 +1116,8 @@ let TargetPrefix = "riscv" in {
1108
1116
[llvm_ptr_ty,
1109
1117
LLVMScalarOrSameVectorWidth<0, llvm_i1_ty>,
1110
1118
llvm_anyint_ty]),
1111
- [NoCapture<ArgIndex<nf>>, IntrWriteMem]>, RISCVVIntrinsic {
1119
+ [NoCapture<ArgIndex<nf>>, IntrWriteMem, IntrArgMemOnly]>,
1120
+ RISCVVIntrinsic {
1112
1121
let VLOperand = !add(nf, 2);
1113
1122
}
1114
1123
0 commit comments