95
95
#define VP_PROPERTY_FUNCTIONAL_OPC (OPC )
96
96
#endif
97
97
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.
105
100
#ifndef VP_PROPERTY_CONSTRAINEDFP
106
- #define VP_PROPERTY_CONSTRAINEDFP (HASROUND, HASEXCEPT, INTRINID )
101
+ #define VP_PROPERTY_CONSTRAINEDFP (INTRINID )
107
102
#endif
108
103
109
104
// The intrinsic and/or SDNode has the same function as this ISD Opcode.
123
118
#define VP_PROPERTY_NO_FUNCTIONAL
124
119
#endif
125
120
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
-
132
121
// A property to infer VP binary-op SDNode opcodes automatically.
133
122
#ifndef VP_PROPERTY_BINARYOP
134
123
#define VP_PROPERTY_BINARYOP
135
124
#endif
136
125
137
- // A property to infer VP type casts automatically.
138
- #ifndef VP_PROPERTY_CASTOP
139
- #define VP_PROPERTY_CASTOP
140
- #endif
141
-
142
126
// / } Property Macros
143
127
144
128
// /// Integer Arithmetic {
@@ -327,7 +311,7 @@ END_REGISTER_VP(vp_usub_sat, VP_USUBSAT)
327
311
#define HELPER_REGISTER_BINARY_FP_VP (OPSUFFIX, VPSD, IROPC, SDOPC ) \
328
312
BEGIN_REGISTER_VP (vp_##OPSUFFIX, 2 , 3 , VPSD, -1 ) \
329
313
VP_PROPERTY_FUNCTIONAL_OPC(IROPC) \
330
- VP_PROPERTY_CONSTRAINEDFP(1 , 1 , experimental_constrained_##OPSUFFIX) \
314
+ VP_PROPERTY_CONSTRAINEDFP(experimental_constrained_##OPSUFFIX) \
331
315
VP_PROPERTY_FUNCTIONAL_SDOPC(SDOPC) \
332
316
VP_PROPERTY_BINARYOP \
333
317
END_REGISTER_VP(vp_##OPSUFFIX, VPSD)
@@ -369,14 +353,14 @@ END_REGISTER_VP(vp_sqrt, VP_SQRT)
369
353
370
354
// llvm.vp.fma(x,y,z,mask,vlen)
371
355
BEGIN_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)
373
357
VP_PROPERTY_FUNCTIONAL_INTRINSIC(fma)
374
358
VP_PROPERTY_FUNCTIONAL_SDOPC(FMA)
375
359
END_REGISTER_VP(vp_fma, VP_FMA)
376
360
377
361
// llvm.vp.fmuladd(x,y,z,mask,vlen)
378
362
BEGIN_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)
380
364
VP_PROPERTY_FUNCTIONAL_INTRINSIC(fmuladd)
381
365
VP_PROPERTY_FUNCTIONAL_SDOPC(FMAD)
382
366
END_REGISTER_VP(vp_fmuladd, VP_FMULADD)
@@ -479,31 +463,30 @@ END_REGISTER_VP(vp_llrint, VP_LLRINT)
479
463
#error \
480
464
" The internal helper macro HELPER_REGISTER_FP_CAST_VP is already defined!"
481
465
#endif
482
- #define HELPER_REGISTER_FP_CAST_VP (OPSUFFIX, VPSD, IROPC, SDOPC, HASROUND ) \
466
+ #define HELPER_REGISTER_FP_CAST_VP (OPSUFFIX, VPSD, IROPC, SDOPC ) \
483
467
BEGIN_REGISTER_VP (vp_##OPSUFFIX, 1 , 2 , VPSD, -1 ) \
484
468
VP_PROPERTY_FUNCTIONAL_OPC(IROPC) \
485
469
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) \
488
471
END_REGISTER_VP(vp_##OPSUFFIX, VPSD)
489
472
490
473
// 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)
492
475
493
476
// 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)
495
478
496
479
// 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)
498
481
499
482
// 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)
501
484
502
485
// 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)
504
487
505
488
// 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)
507
490
508
491
#undef HELPER_REGISTER_FP_CAST_VP
509
492
@@ -517,7 +500,6 @@ HELPER_REGISTER_FP_CAST_VP(fpext, VP_FP_EXTEND, FPExt, FP_EXTEND, 0)
517
500
BEGIN_REGISTER_VP (vp_##OPSUFFIX, 1 , 2 , VPSD, -1 ) \
518
501
VP_PROPERTY_FUNCTIONAL_OPC(IROPC) \
519
502
VP_PROPERTY_FUNCTIONAL_SDOPC(SDOPC) \
520
- VP_PROPERTY_CASTOP \
521
503
END_REGISTER_VP(vp_##OPSUFFIX, VPSD)
522
504
523
505
// llvm.vp.trunc(x,mask,vlen)
@@ -532,13 +514,11 @@ HELPER_REGISTER_INT_CAST_VP(sext, VP_SIGN_EXTEND, SExt, SIGN_EXTEND)
532
514
// llvm.vp.ptrtoint(x,mask,vlen)
533
515
BEGIN_REGISTER_VP(vp_ptrtoint, 1 , 2 , VP_PTRTOINT, -1 )
534
516
VP_PROPERTY_FUNCTIONAL_OPC(PtrToInt)
535
- VP_PROPERTY_CASTOP
536
517
END_REGISTER_VP(vp_ptrtoint, VP_PTRTOINT)
537
518
538
519
// llvm.vp.inttoptr(x,mask,vlen)
539
520
BEGIN_REGISTER_VP(vp_inttoptr, 1 , 2 , VP_INTTOPTR, -1 )
540
521
VP_PROPERTY_FUNCTIONAL_OPC(IntToPtr)
541
- VP_PROPERTY_CASTOP
542
522
END_REGISTER_VP(vp_inttoptr, VP_INTTOPTR)
543
523
544
524
#undef HELPER_REGISTER_INT_CAST_VP
@@ -555,7 +535,7 @@ END_REGISTER_VP_SDNODE(VP_SETCC)
555
535
BEGIN_REGISTER_VP_INTRINSIC(vp_fcmp, 3 , 4 )
556
536
HELPER_MAP_VPID_TO_VPSD(vp_fcmp, VP_SETCC)
557
537
VP_PROPERTY_FUNCTIONAL_OPC(FCmp)
558
- VP_PROPERTY_CONSTRAINEDFP(0 , 1 , experimental_constrained_fcmp)
538
+ VP_PROPERTY_CONSTRAINEDFP(experimental_constrained_fcmp)
559
539
END_REGISTER_VP_INTRINSIC(vp_fcmp)
560
540
561
541
// llvm.vp.icmp(x,y,cc,mask,vlen)
@@ -579,7 +559,6 @@ BEGIN_REGISTER_VP_SDNODE(VP_STORE, 1, vp_store, 4, 5)
579
559
HELPER_MAP_VPID_TO_VPSD(vp_store, VP_STORE)
580
560
VP_PROPERTY_FUNCTIONAL_OPC(Store)
581
561
VP_PROPERTY_FUNCTIONAL_INTRINSIC(masked_store)
582
- VP_PROPERTY_MEMOP(1 , 0 )
583
562
END_REGISTER_VP(vp_store, VP_STORE)
584
563
585
564
// llvm.experimental.vp.strided.store(val,ptr,stride,mask,vlen)
@@ -588,7 +567,6 @@ BEGIN_REGISTER_VP_INTRINSIC(experimental_vp_strided_store, 3, 4)
588
567
VP_PROPERTY_NO_FUNCTIONAL
589
568
BEGIN_REGISTER_VP_SDNODE(EXPERIMENTAL_VP_STRIDED_STORE, 1 , experimental_vp_strided_store, 5 , 6 )
590
569
HELPER_MAP_VPID_TO_VPSD(experimental_vp_strided_store, EXPERIMENTAL_VP_STRIDED_STORE)
591
- VP_PROPERTY_MEMOP(1 , 0 )
592
570
END_REGISTER_VP(experimental_vp_strided_store, EXPERIMENTAL_VP_STRIDED_STORE)
593
571
594
572
// llvm.vp.scatter(ptr,val,mask,vlen)
@@ -597,7 +575,6 @@ BEGIN_REGISTER_VP_INTRINSIC(vp_scatter, 2, 3)
597
575
BEGIN_REGISTER_VP_SDNODE(VP_SCATTER, 1 , vp_scatter, 5 , 6 )
598
576
HELPER_MAP_VPID_TO_VPSD(vp_scatter, VP_SCATTER)
599
577
VP_PROPERTY_FUNCTIONAL_INTRINSIC(masked_scatter)
600
- VP_PROPERTY_MEMOP(1 , 0 )
601
578
END_REGISTER_VP(vp_scatter, VP_SCATTER)
602
579
603
580
// llvm.vp.load(ptr,mask,vlen)
@@ -607,7 +584,6 @@ BEGIN_REGISTER_VP_SDNODE(VP_LOAD, -1, vp_load, 3, 4)
607
584
HELPER_MAP_VPID_TO_VPSD(vp_load, VP_LOAD)
608
585
VP_PROPERTY_FUNCTIONAL_OPC(Load)
609
586
VP_PROPERTY_FUNCTIONAL_INTRINSIC(masked_load)
610
- VP_PROPERTY_MEMOP(0 , std::nullopt)
611
587
END_REGISTER_VP(vp_load, VP_LOAD)
612
588
613
589
// llvm.experimental.vp.strided.load(ptr,stride,mask,vlen)
@@ -616,7 +592,6 @@ BEGIN_REGISTER_VP_INTRINSIC(experimental_vp_strided_load, 2, 3)
616
592
VP_PROPERTY_NO_FUNCTIONAL
617
593
BEGIN_REGISTER_VP_SDNODE(EXPERIMENTAL_VP_STRIDED_LOAD, -1 , experimental_vp_strided_load, 4 , 5 )
618
594
HELPER_MAP_VPID_TO_VPSD(experimental_vp_strided_load, EXPERIMENTAL_VP_STRIDED_LOAD)
619
- VP_PROPERTY_MEMOP(0 , std::nullopt)
620
595
END_REGISTER_VP(experimental_vp_strided_load, EXPERIMENTAL_VP_STRIDED_LOAD)
621
596
622
597
// llvm.vp.gather(ptr,mask,vlen)
@@ -625,7 +600,6 @@ BEGIN_REGISTER_VP_INTRINSIC(vp_gather, 1, 2)
625
600
BEGIN_REGISTER_VP_SDNODE(VP_GATHER, -1 , vp_gather, 4 , 5 )
626
601
HELPER_MAP_VPID_TO_VPSD(vp_gather, VP_GATHER)
627
602
VP_PROPERTY_FUNCTIONAL_INTRINSIC(masked_gather)
628
- VP_PROPERTY_MEMOP(0 , std::nullopt)
629
603
END_REGISTER_VP(vp_gather, VP_GATHER)
630
604
631
605
// /// } Memory Operations
@@ -778,10 +752,8 @@ END_REGISTER_VP(experimental_vp_splat, EXPERIMENTAL_VP_SPLAT)
778
752
#undef END_REGISTER_VP_SDNODE
779
753
#undef HELPER_MAP_VPID_TO_VPSD
780
754
#undef VP_PROPERTY_BINARYOP
781
- #undef VP_PROPERTY_CASTOP
782
755
#undef VP_PROPERTY_CONSTRAINEDFP
783
756
#undef VP_PROPERTY_FUNCTIONAL_INTRINSIC
784
757
#undef VP_PROPERTY_FUNCTIONAL_OPC
785
758
#undef VP_PROPERTY_FUNCTIONAL_SDOPC
786
759
#undef VP_PROPERTY_NO_FUNCTIONAL
787
- #undef VP_PROPERTY_MEMOP
0 commit comments