9595#define VP_PROPERTY_FUNCTIONAL_OPC (OPC )
9696#endif
9797
98- // Whether the intrinsic may have a rounding mode or exception behavior operand
99- // bundle.
100- // \p HASROUND '1' if the intrinsic can have a rounding mode operand bundle,
101- // '0' otherwise.
102- // \p HASEXCEPT '1' if the intrinsic can have an exception behavior operand
103- // bundle, '0' otherwise.
104- // \p INTRINID The constrained fp intrinsic this VP intrinsic corresponds to.
98+ // If operation can have rounding or fp exceptions, maps to corresponding
99+ // constrained fp intrinsic.
105100#ifndef VP_PROPERTY_CONSTRAINEDFP
106- #define VP_PROPERTY_CONSTRAINEDFP (HASROUND, HASEXCEPT, INTRINID )
101+ #define VP_PROPERTY_CONSTRAINEDFP (INTRINID )
107102#endif
108103
109104// The intrinsic and/or SDNode has the same function as this ISD Opcode.
123118#define VP_PROPERTY_NO_FUNCTIONAL
124119#endif
125120
126- // This VP Intrinsic is a memory operation
127- // The pointer arg is at POINTERPOS and the data arg is at DATAPOS.
128- #ifndef VP_PROPERTY_MEMOP
129- #define VP_PROPERTY_MEMOP (POINTERPOS, DATAPOS )
130- #endif
131-
132121// A property to infer VP binary-op SDNode opcodes automatically.
133122#ifndef VP_PROPERTY_BINARYOP
134123#define VP_PROPERTY_BINARYOP
135124#endif
136125
137- // A property to infer VP type casts automatically.
138- #ifndef VP_PROPERTY_CASTOP
139- #define VP_PROPERTY_CASTOP
140- #endif
141-
142126// / } Property Macros
143127
144128// /// Integer Arithmetic {
@@ -327,7 +311,7 @@ END_REGISTER_VP(vp_usub_sat, VP_USUBSAT)
327311#define HELPER_REGISTER_BINARY_FP_VP (OPSUFFIX, VPSD, IROPC, SDOPC ) \
328312 BEGIN_REGISTER_VP (vp_##OPSUFFIX, 2 , 3 , VPSD, -1 ) \
329313 VP_PROPERTY_FUNCTIONAL_OPC(IROPC) \
330- VP_PROPERTY_CONSTRAINEDFP(1 , 1 , experimental_constrained_##OPSUFFIX) \
314+ VP_PROPERTY_CONSTRAINEDFP(experimental_constrained_##OPSUFFIX) \
331315 VP_PROPERTY_FUNCTIONAL_SDOPC(SDOPC) \
332316 VP_PROPERTY_BINARYOP \
333317 END_REGISTER_VP(vp_##OPSUFFIX, VPSD)
@@ -369,14 +353,14 @@ END_REGISTER_VP(vp_sqrt, VP_SQRT)
369353
370354// llvm.vp.fma(x,y,z,mask,vlen)
371355BEGIN_REGISTER_VP(vp_fma, 3 , 4 , VP_FMA, -1 )
372- VP_PROPERTY_CONSTRAINEDFP(1 , 1 , experimental_constrained_fma)
356+ VP_PROPERTY_CONSTRAINEDFP(experimental_constrained_fma)
373357VP_PROPERTY_FUNCTIONAL_INTRINSIC(fma)
374358VP_PROPERTY_FUNCTIONAL_SDOPC(FMA)
375359END_REGISTER_VP(vp_fma, VP_FMA)
376360
377361// llvm.vp.fmuladd(x,y,z,mask,vlen)
378362BEGIN_REGISTER_VP(vp_fmuladd, 3 , 4 , VP_FMULADD, -1 )
379- VP_PROPERTY_CONSTRAINEDFP(1 , 1 , experimental_constrained_fmuladd)
363+ VP_PROPERTY_CONSTRAINEDFP(experimental_constrained_fmuladd)
380364VP_PROPERTY_FUNCTIONAL_INTRINSIC(fmuladd)
381365VP_PROPERTY_FUNCTIONAL_SDOPC(FMAD)
382366END_REGISTER_VP(vp_fmuladd, VP_FMULADD)
@@ -479,31 +463,30 @@ END_REGISTER_VP(vp_llrint, VP_LLRINT)
479463#error \
480464 " The internal helper macro HELPER_REGISTER_FP_CAST_VP is already defined!"
481465#endif
482- #define HELPER_REGISTER_FP_CAST_VP (OPSUFFIX, VPSD, IROPC, SDOPC, HASROUND ) \
466+ #define HELPER_REGISTER_FP_CAST_VP (OPSUFFIX, VPSD, IROPC, SDOPC ) \
483467 BEGIN_REGISTER_VP (vp_##OPSUFFIX, 1 , 2 , VPSD, -1 ) \
484468 VP_PROPERTY_FUNCTIONAL_OPC(IROPC) \
485469 VP_PROPERTY_FUNCTIONAL_SDOPC(SDOPC) \
486- VP_PROPERTY_CONSTRAINEDFP(HASROUND, 1 , experimental_constrained_##OPSUFFIX) \
487- VP_PROPERTY_CASTOP \
470+ VP_PROPERTY_CONSTRAINEDFP(experimental_constrained_##OPSUFFIX) \
488471 END_REGISTER_VP(vp_##OPSUFFIX, VPSD)
489472
490473// llvm.vp.fptoui(x,mask,vlen)
491- HELPER_REGISTER_FP_CAST_VP(fptoui, VP_FP_TO_UINT, FPToUI, FP_TO_UINT, 0 )
474+ HELPER_REGISTER_FP_CAST_VP(fptoui, VP_FP_TO_UINT, FPToUI, FP_TO_UINT)
492475
493476// llvm.vp.fptosi(x,mask,vlen)
494- HELPER_REGISTER_FP_CAST_VP(fptosi, VP_FP_TO_SINT, FPToSI, FP_TO_SINT, 0 )
477+ HELPER_REGISTER_FP_CAST_VP(fptosi, VP_FP_TO_SINT, FPToSI, FP_TO_SINT)
495478
496479// llvm.vp.uitofp(x,mask,vlen)
497- HELPER_REGISTER_FP_CAST_VP(uitofp, VP_UINT_TO_FP, UIToFP, UINT_TO_FP, 1 )
480+ HELPER_REGISTER_FP_CAST_VP(uitofp, VP_UINT_TO_FP, UIToFP, UINT_TO_FP)
498481
499482// llvm.vp.sitofp(x,mask,vlen)
500- HELPER_REGISTER_FP_CAST_VP(sitofp, VP_SINT_TO_FP, SIToFP, SINT_TO_FP, 1 )
483+ HELPER_REGISTER_FP_CAST_VP(sitofp, VP_SINT_TO_FP, SIToFP, SINT_TO_FP)
501484
502485// llvm.vp.fptrunc(x,mask,vlen)
503- HELPER_REGISTER_FP_CAST_VP(fptrunc, VP_FP_ROUND, FPTrunc, FP_ROUND, 1 )
486+ HELPER_REGISTER_FP_CAST_VP(fptrunc, VP_FP_ROUND, FPTrunc, FP_ROUND)
504487
505488// llvm.vp.fpext(x,mask,vlen)
506- HELPER_REGISTER_FP_CAST_VP(fpext, VP_FP_EXTEND, FPExt, FP_EXTEND, 0 )
489+ HELPER_REGISTER_FP_CAST_VP(fpext, VP_FP_EXTEND, FPExt, FP_EXTEND)
507490
508491#undef HELPER_REGISTER_FP_CAST_VP
509492
@@ -517,7 +500,6 @@ HELPER_REGISTER_FP_CAST_VP(fpext, VP_FP_EXTEND, FPExt, FP_EXTEND, 0)
517500 BEGIN_REGISTER_VP (vp_##OPSUFFIX, 1 , 2 , VPSD, -1 ) \
518501 VP_PROPERTY_FUNCTIONAL_OPC(IROPC) \
519502 VP_PROPERTY_FUNCTIONAL_SDOPC(SDOPC) \
520- VP_PROPERTY_CASTOP \
521503 END_REGISTER_VP(vp_##OPSUFFIX, VPSD)
522504
523505// llvm.vp.trunc(x,mask,vlen)
@@ -532,13 +514,11 @@ HELPER_REGISTER_INT_CAST_VP(sext, VP_SIGN_EXTEND, SExt, SIGN_EXTEND)
532514// llvm.vp.ptrtoint(x,mask,vlen)
533515BEGIN_REGISTER_VP(vp_ptrtoint, 1 , 2 , VP_PTRTOINT, -1 )
534516VP_PROPERTY_FUNCTIONAL_OPC(PtrToInt)
535- VP_PROPERTY_CASTOP
536517END_REGISTER_VP(vp_ptrtoint, VP_PTRTOINT)
537518
538519// llvm.vp.inttoptr(x,mask,vlen)
539520BEGIN_REGISTER_VP(vp_inttoptr, 1 , 2 , VP_INTTOPTR, -1 )
540521VP_PROPERTY_FUNCTIONAL_OPC(IntToPtr)
541- VP_PROPERTY_CASTOP
542522END_REGISTER_VP(vp_inttoptr, VP_INTTOPTR)
543523
544524#undef HELPER_REGISTER_INT_CAST_VP
@@ -555,7 +535,7 @@ END_REGISTER_VP_SDNODE(VP_SETCC)
555535BEGIN_REGISTER_VP_INTRINSIC(vp_fcmp, 3 , 4 )
556536HELPER_MAP_VPID_TO_VPSD(vp_fcmp, VP_SETCC)
557537VP_PROPERTY_FUNCTIONAL_OPC(FCmp)
558- VP_PROPERTY_CONSTRAINEDFP(0 , 1 , experimental_constrained_fcmp)
538+ VP_PROPERTY_CONSTRAINEDFP(experimental_constrained_fcmp)
559539END_REGISTER_VP_INTRINSIC(vp_fcmp)
560540
561541// llvm.vp.icmp(x,y,cc,mask,vlen)
@@ -579,7 +559,6 @@ BEGIN_REGISTER_VP_SDNODE(VP_STORE, 1, vp_store, 4, 5)
579559HELPER_MAP_VPID_TO_VPSD(vp_store, VP_STORE)
580560VP_PROPERTY_FUNCTIONAL_OPC(Store)
581561VP_PROPERTY_FUNCTIONAL_INTRINSIC(masked_store)
582- VP_PROPERTY_MEMOP(1 , 0 )
583562END_REGISTER_VP(vp_store, VP_STORE)
584563
585564// llvm.experimental.vp.strided.store(val,ptr,stride,mask,vlen)
@@ -588,7 +567,6 @@ BEGIN_REGISTER_VP_INTRINSIC(experimental_vp_strided_store, 3, 4)
588567VP_PROPERTY_NO_FUNCTIONAL
589568BEGIN_REGISTER_VP_SDNODE(EXPERIMENTAL_VP_STRIDED_STORE, 1 , experimental_vp_strided_store, 5 , 6 )
590569HELPER_MAP_VPID_TO_VPSD(experimental_vp_strided_store, EXPERIMENTAL_VP_STRIDED_STORE)
591- VP_PROPERTY_MEMOP(1 , 0 )
592570END_REGISTER_VP(experimental_vp_strided_store, EXPERIMENTAL_VP_STRIDED_STORE)
593571
594572// llvm.vp.scatter(ptr,val,mask,vlen)
@@ -597,7 +575,6 @@ BEGIN_REGISTER_VP_INTRINSIC(vp_scatter, 2, 3)
597575BEGIN_REGISTER_VP_SDNODE(VP_SCATTER, 1 , vp_scatter, 5 , 6 )
598576HELPER_MAP_VPID_TO_VPSD(vp_scatter, VP_SCATTER)
599577VP_PROPERTY_FUNCTIONAL_INTRINSIC(masked_scatter)
600- VP_PROPERTY_MEMOP(1 , 0 )
601578END_REGISTER_VP(vp_scatter, VP_SCATTER)
602579
603580// llvm.vp.load(ptr,mask,vlen)
@@ -607,7 +584,6 @@ BEGIN_REGISTER_VP_SDNODE(VP_LOAD, -1, vp_load, 3, 4)
607584HELPER_MAP_VPID_TO_VPSD(vp_load, VP_LOAD)
608585VP_PROPERTY_FUNCTIONAL_OPC(Load)
609586VP_PROPERTY_FUNCTIONAL_INTRINSIC(masked_load)
610- VP_PROPERTY_MEMOP(0 , std::nullopt )
611587END_REGISTER_VP(vp_load, VP_LOAD)
612588
613589// llvm.experimental.vp.strided.load(ptr,stride,mask,vlen)
@@ -616,7 +592,6 @@ BEGIN_REGISTER_VP_INTRINSIC(experimental_vp_strided_load, 2, 3)
616592VP_PROPERTY_NO_FUNCTIONAL
617593BEGIN_REGISTER_VP_SDNODE(EXPERIMENTAL_VP_STRIDED_LOAD, -1 , experimental_vp_strided_load, 4 , 5 )
618594HELPER_MAP_VPID_TO_VPSD(experimental_vp_strided_load, EXPERIMENTAL_VP_STRIDED_LOAD)
619- VP_PROPERTY_MEMOP(0 , std::nullopt )
620595END_REGISTER_VP(experimental_vp_strided_load, EXPERIMENTAL_VP_STRIDED_LOAD)
621596
622597// llvm.vp.gather(ptr,mask,vlen)
@@ -625,7 +600,6 @@ BEGIN_REGISTER_VP_INTRINSIC(vp_gather, 1, 2)
625600BEGIN_REGISTER_VP_SDNODE(VP_GATHER, -1 , vp_gather, 4 , 5 )
626601HELPER_MAP_VPID_TO_VPSD(vp_gather, VP_GATHER)
627602VP_PROPERTY_FUNCTIONAL_INTRINSIC(masked_gather)
628- VP_PROPERTY_MEMOP(0 , std::nullopt )
629603END_REGISTER_VP(vp_gather, VP_GATHER)
630604
631605// /// } Memory Operations
@@ -778,10 +752,8 @@ END_REGISTER_VP(experimental_vp_splat, EXPERIMENTAL_VP_SPLAT)
778752#undef END_REGISTER_VP_SDNODE
779753#undef HELPER_MAP_VPID_TO_VPSD
780754#undef VP_PROPERTY_BINARYOP
781- #undef VP_PROPERTY_CASTOP
782755#undef VP_PROPERTY_CONSTRAINEDFP
783756#undef VP_PROPERTY_FUNCTIONAL_INTRINSIC
784757#undef VP_PROPERTY_FUNCTIONAL_OPC
785758#undef VP_PROPERTY_FUNCTIONAL_SDOPC
786759#undef VP_PROPERTY_NO_FUNCTIONAL
787- #undef VP_PROPERTY_MEMOP
0 commit comments