reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
589 OS << "// Add parameter attributes that are not common to all intrinsics.\n"; 590 OS << "#ifdef GET_INTRINSIC_ATTRIBUTES\n"; 592 OS << "static AttributeList getAttributes(LLVMContext &C, " << TargetPrefix 595 OS << "AttributeList Intrinsic::getAttributes(LLVMContext &C, ID id) {\n"; 615 OS << " static const uint8_t IntrinsicsToAttributesMap[] = {\n"; 620 OS << " " << UniqAttributes[&intrinsic] << ", // " 623 OS << " };\n\n"; 625 OS << " AttributeList AS[" << maxArgAttrs + 1 << "];\n"; 626 OS << " unsigned NumAttrs = 0;\n"; 627 OS << " if (id != 0) {\n"; 628 OS << " switch(IntrinsicsToAttributesMap[id - "; 630 OS << "Intrinsic::num_intrinsics"; 632 OS << "1"; 633 OS << "]) {\n"; 634 OS << " default: llvm_unreachable(\"Invalid attribute number\");\n"; 637 OS << " case " << I->second << ": {\n"; 651 OS << " const Attribute::AttrKind AttrParam" << attrIdx << "[]= {"; 658 OS << ","; 659 OS << "Attribute::NoCapture"; 664 OS << ","; 665 OS << "Attribute::NoAlias"; 670 OS << ","; 671 OS << "Attribute::Returned"; 676 OS << ","; 677 OS << "Attribute::ReadOnly"; 682 OS << ","; 683 OS << "Attribute::WriteOnly"; 688 OS << ","; 689 OS << "Attribute::ReadNone"; 694 OS << ','; 695 OS << "Attribute::ImmArg"; 702 OS << "};\n"; 703 OS << " AS[" << numAttrs++ << "] = AttributeList::get(C, " 713 OS << " const Attribute::AttrKind Atts[] = {"; 716 OS << "Attribute::NoUnwind"; 721 OS << ","; 722 OS << "Attribute::NoReturn"; 727 OS << ","; 728 OS << "Attribute::WillReturn"; 733 OS << ","; 734 OS << "Attribute::Cold"; 739 OS << ","; 740 OS << "Attribute::NoDuplicate"; 745 OS << ","; 746 OS << "Attribute::Convergent"; 751 OS << ","; 752 OS << "Attribute::Speculatable"; 761 OS << ","; 762 OS << "Attribute::ReadNone"; 766 OS << ","; 767 OS << "Attribute::ReadOnly,"; 768 OS << "Attribute::ArgMemOnly"; 772 OS << ","; 773 OS << "Attribute::ReadOnly"; 777 OS << ","; 778 OS << "Attribute::ReadOnly,"; 779 OS << "Attribute::InaccessibleMemOnly"; 783 OS << ","; 784 OS << "Attribute::ReadOnly,"; 785 OS << "Attribute::InaccessibleMemOrArgMemOnly"; 789 OS << ","; 790 OS << "Attribute::WriteOnly,"; 791 OS << "Attribute::ArgMemOnly"; 795 OS << ","; 796 OS << "Attribute::WriteOnly"; 800 OS << ","; 801 OS << "Attribute::WriteOnly,"; 802 OS << "Attribute::InaccessibleMemOnly"; 806 OS << ","; 807 OS << "Attribute::WriteOnly,"; 808 OS << "Attribute::InaccessibleMemOrArgMemOnly"; 812 OS << ","; 813 OS << "Attribute::ArgMemOnly"; 817 OS << ","; 818 OS << "Attribute::InaccessibleMemOnly"; 822 OS << ","; 823 OS << "Attribute::InaccessibleMemOrArgMemOnly"; 828 OS << "};\n"; 829 OS << " AS[" << numAttrs++ << "] = AttributeList::get(C, " 834 OS << " NumAttrs = " << numAttrs << ";\n"; 835 OS << " break;\n"; 836 OS << " }\n"; 838 OS << " return AttributeList();\n"; 839 OS << " }\n"; 843 OS << " }\n"; 844 OS << " }\n"; 845 OS << " return AttributeList::get(C, makeArrayRef(AS, NumAttrs));\n"; 846 OS << "}\n"; 847 OS << "#endif // GET_INTRINSIC_ATTRIBUTES\n\n";