[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

`