|
648 | 648 | StringAttribute("enzyme_inactive"), |
649 | 649 | EnumAttribute("readnone"), |
650 | 650 | EnumAttribute("speculatable"), |
| 651 | + EnumAttribute("willreturn"), |
| 652 | + EnumAttribute("nosync"), |
| 653 | + EnumAttribute("nofree"), |
| 654 | + EnumAttribute("nounwind"), |
651 | 655 | StringAttribute("enzyme_shouldrecompute"), |
652 | 656 | ], |
653 | 657 | ) |
|
662 | 666 | StringAttribute("enzyme_inactive"), |
663 | 667 | EnumAttribute("memory", NoEffects.data), |
664 | 668 | EnumAttribute("speculatable"), |
| 669 | + EnumAttribute("willreturn"), |
| 670 | + EnumAttribute("nosync"), |
| 671 | + EnumAttribute("nofree"), |
| 672 | + EnumAttribute("nounwind"), |
665 | 673 | StringAttribute("enzyme_shouldrecompute"), |
666 | 674 | ], |
667 | 675 | ) |
|
680 | 688 | EnumAttribute("readonly"), |
681 | 689 | EnumAttribute("inaccessiblememonly", 0), |
682 | 690 | EnumAttribute("speculatable", 0), |
| 691 | + EnumAttribute("willreturn"), |
| 692 | + EnumAttribute("nosync"), |
| 693 | + EnumAttribute("nofree"), |
683 | 694 | StringAttribute("enzyme_shouldrecompute"), |
684 | 695 | StringAttribute("enzyme_inactive"), |
685 | 696 | ], |
|
700 | 711 | (MRI_NoModRef << getLocationPos(Other)), |
701 | 712 | ).data, |
702 | 713 | ), |
| 714 | + EnumAttribute("willreturn"), |
| 715 | + EnumAttribute("nosync"), |
| 716 | + EnumAttribute("nofree"), |
703 | 717 | EnumAttribute("inaccessiblememonly", 0), |
704 | 718 | EnumAttribute("speculatable", 0), |
705 | 719 | StringAttribute("enzyme_shouldrecompute"), |
|
722 | 736 | StringAttribute("enzyme_shouldrecompute"), |
723 | 737 | StringAttribute("enzyme_inactive"), |
724 | 738 | StringAttribute("enzyme_no_escaping_allocation"), |
| 739 | + EnumAttribute("willreturn"), |
| 740 | + EnumAttribute("nosync"), |
725 | 741 | EnumAttribute("nofree"), |
726 | 742 | StringAttribute("enzyme_ta_norecur"), |
727 | 743 | ], |
|
740 | 756 | StringAttribute("enzyme_shouldrecompute"), |
741 | 757 | StringAttribute("enzyme_inactive"), |
742 | 758 | StringAttribute("enzyme_no_escaping_allocation"), |
| 759 | + EnumAttribute("willreturn"), |
| 760 | + EnumAttribute("nosync"), |
743 | 761 | EnumAttribute("nofree"), |
744 | 762 | StringAttribute("enzyme_ta_norecur"), |
745 | 763 | ], |
|
762 | 780 | EnumAttribute("readonly"), |
763 | 781 | EnumAttribute("inaccessiblememonly"), |
764 | 782 | EnumAttribute("speculatable"), |
| 783 | + EnumAttribute("willreturn"), |
| 784 | + EnumAttribute("nosync"), |
| 785 | + EnumAttribute("nofree"), |
| 786 | + EnumAttribute("nounwind"), |
765 | 787 | StringAttribute("enzyme_shouldrecompute"), |
766 | 788 | StringAttribute("enzyme_inactive"), |
767 | 789 | StringAttribute("enzyme_no_escaping_allocation"), |
|
784 | 806 | ).data, |
785 | 807 | ), |
786 | 808 | EnumAttribute("speculatable"), |
| 809 | + EnumAttribute("willreturn"), |
| 810 | + EnumAttribute("nosync"), |
| 811 | + EnumAttribute("nofree"), |
| 812 | + EnumAttribute("nounwind"), |
787 | 813 | StringAttribute("enzyme_shouldrecompute"), |
788 | 814 | StringAttribute("enzyme_inactive"), |
789 | 815 | StringAttribute("enzyme_no_escaping_allocation"), |
@@ -994,9 +1020,18 @@ end |
994 | 1020 | name = T == Float32 ? name * "f" : name |
995 | 1021 |
|
996 | 1022 | attrs = if LLVM.version().major <= 15 |
997 | | - LLVM.Attribute[LLVM.EnumAttribute("readnone"), StringAttribute("enzyme_shouldrecompute")] |
| 1023 | + LLVM.Attribute[LLVM.EnumAttribute("readnone"), StringAttribute("enzyme_shouldrecompute"), |
| 1024 | + EnumAttribute("willreturn"), |
| 1025 | + EnumAttribute("nosync"), |
| 1026 | + EnumAttribute("nounwind"), |
| 1027 | + EnumAttribute("nofree"), |
| 1028 | + ] |
998 | 1029 | else |
999 | | - LLVM.Attribute[EnumAttribute("memory", NoEffects.data), StringAttribute("enzyme_shouldrecompute")] |
| 1030 | + LLVM.Attribute[EnumAttribute("memory", NoEffects.data), StringAttribute("enzyme_shouldrecompute"), |
| 1031 | + EnumAttribute("willreturn"), |
| 1032 | + EnumAttribute("nosync"), |
| 1033 | + EnumAttribute("nounwind"), |
| 1034 | + EnumAttribute("nofree")] |
1000 | 1035 | end |
1001 | 1036 | handleCustom(state, custom, k_name, llvmfn, name, attrs) |
1002 | 1037 | return |
|
0 commit comments