[VP] Implementation of intrinsic and SDNode definitions for VP load, … · llvm/llvm-project@d21a35a (original) (raw)
`@@ -100,6 +100,17 @@ END_REGISTER_VP_SDNODE(SDOPC)
`
100
100
`#define HANDLE_VP_TO_CONSTRAINEDFP(HASROUND, HASEXCEPT, INTRINID)
`
101
101
`#endif
`
102
102
``
``
103
`+
// Map this VP intrinsic to its canonical functional intrinsic.
`
``
104
`+
#ifndef HANDLE_VP_TO_INTRIN
`
``
105
`+
#define HANDLE_VP_TO_INTRIN(ID)
`
``
106
`+
#endif
`
``
107
+
``
108
`+
// This VP Intrinsic is a memory operation
`
``
109
`+
// The pointer arg is at POINTERPOS and the data arg is at DATAPOS.
`
``
110
`+
#ifndef HANDLE_VP_IS_MEMOP
`
``
111
`+
#define HANDLE_VP_IS_MEMOP(VPID, POINTERPOS, DATAPOS)
`
``
112
`+
#endif
`
``
113
+
103
114
`/// } Property Macros
`
104
115
``
105
116
`///// Integer Arithmetic {
`
`@@ -191,6 +202,36 @@ HELPER_REGISTER_BINARY_FP_VP(frem, VP_FREM, FRem)
`
191
202
``
192
203
`///// } Floating-Point Arithmetic
`
193
204
``
``
205
`+
///// Memory Operations {
`
``
206
`+
// llvm.vp.store(ptr,val,mask,vlen)
`
``
207
`+
BEGIN_REGISTER_VP(vp_store, 2, 3, VP_STORE, 0)
`
``
208
`+
HANDLE_VP_TO_OPC(Store)
`
``
209
`+
HANDLE_VP_TO_INTRIN(masked_store)
`
``
210
`+
HANDLE_VP_IS_MEMOP(vp_store, 1, 0)
`
``
211
`+
END_REGISTER_VP(vp_store, VP_STORE)
`
``
212
+
``
213
`+
// llvm.vp.scatter(ptr,val,mask,vlen)
`
``
214
`+
BEGIN_REGISTER_VP(vp_scatter, 2, 3, VP_SCATTER, 0)
`
``
215
`+
HANDLE_VP_TO_INTRIN(masked_scatter)
`
``
216
`+
HANDLE_VP_IS_MEMOP(vp_scatter, 1, 0)
`
``
217
`+
END_REGISTER_VP(vp_scatter, VP_SCATTER)
`
``
218
+
``
219
`+
// llvm.vp.load(ptr,mask,vlen)
`
``
220
`+
BEGIN_REGISTER_VP(vp_load, 1, 2, VP_LOAD, -1)
`
``
221
`+
HANDLE_VP_TO_OPC(Load)
`
``
222
`+
HANDLE_VP_TO_INTRIN(masked_load)
`
``
223
`+
HANDLE_VP_IS_MEMOP(vp_load, 0, None)
`
``
224
`+
END_REGISTER_VP(vp_load, VP_LOAD)
`
``
225
+
``
226
`+
// llvm.vp.gather(ptr,mask,vlen)
`
``
227
`+
BEGIN_REGISTER_VP(vp_gather, 1, 2, VP_GATHER, -1)
`
``
228
`+
HANDLE_VP_TO_INTRIN(masked_gather)
`
``
229
`+
HANDLE_VP_IS_MEMOP(vp_gather, 0, None)
`
``
230
`+
END_REGISTER_VP(vp_gather, VP_GATHER)
`
``
231
+
``
232
`+
///// } Memory Operations
`
``
233
+
``
234
+
194
235
`#undef BEGIN_REGISTER_VP
`
195
236
`#undef BEGIN_REGISTER_VP_INTRINSIC
`
196
237
`#undef BEGIN_REGISTER_VP_SDNODE
`
`@@ -199,3 +240,5 @@ HELPER_REGISTER_BINARY_FP_VP(frem, VP_FREM, FRem)
`
199
240
`#undef END_REGISTER_VP_SDNODE
`
200
241
`#undef HANDLE_VP_TO_OPC
`
201
242
`#undef HANDLE_VP_TO_CONSTRAINEDFP
`
``
243
`+
#undef HANDLE_VP_TO_INTRIN
`
``
244
`+
#undef HANDLE_VP_IS_MEMOP
`