Lines Matching defs:intrinsic

1 //===- IntrinsicEmitter.cpp - Generate intrinsic information --------------===//
10 // This tablegen backend emits information about intrinsic functions.
79 // Emit the intrinsic ID -> name table.
82 // Emit the intrinsic ID -> overload table.
88 // Emit the intrinsic declaration generator.
91 // Emit the intrinsic parameter attributes.
94 // Emit intrinsic alias analysis mod/ref behavior.
138 // Sort in reverse order of intrinsic name so "abc.def" appears after
151 // Build a 'first character of function name' -> intrinsic # mapping.
162 // Emit the intrinsic matching stuff by first letter.
206 OS << " // Note that entry #0 is the invalid intrinsic!\n";
220 // Add one to the index so we emit a null bit for the invalid #0 intrinsic.
227 // OTable contains a true bit at the position if the intrinsic is overloaded.
274 default: PrintFatalError("unhandled integer type width in intrinsic!");
284 default: PrintFatalError("unhandled MVT in intrinsic!");
356 default: PrintFatalError("unhandled vector type width in intrinsic!");
377 /// intrinsic into 32 bits, return it. If not, return ~0U.
411 // If we can compute a 32-bit fixed encoding for this intrinsic, do so and
421 // Get the signature for the intrinsic.
456 OS << "// Global intrinsic function declaration type table.\n";
497 static ModRefKind getModRefKind(const CodeGenIntrinsic &intrinsic) {
498 switch (intrinsic.ModRef) {
551 const CodeGenIntrinsic &intrinsic = Ints[i];
553 std::max(maxArgAttrs, unsigned(intrinsic.ArgumentAttributes.size()));
554 unsigned &N = UniqAttributes[&intrinsic];
565 const CodeGenIntrinsic &intrinsic = Ints[i];
567 OS << " " << UniqAttributes[&intrinsic] << ", // "
568 << intrinsic.Name << "\n";
586 const CodeGenIntrinsic &intrinsic = *(I->first);
592 unsigned ai = 0, ae = intrinsic.ArgumentAttributes.size();
595 unsigned argNo = intrinsic.ArgumentAttributes[ai].first;
601 switch (intrinsic.ArgumentAttributes[ai].second) {
623 } while (ai != ae && intrinsic.ArgumentAttributes[ai].first == argNo);
630 ModRefKind modRef = getModRefKind(intrinsic);
632 if (!intrinsic.canThrow || modRef || intrinsic.isNoReturn) {
635 if (!intrinsic.canThrow) {
639 if (intrinsic.isNoReturn) {
681 /// EmitModRefBehavior - Determine intrinsic alias analysis mod/ref behavior.
684 OS << "// Determine intrinsic alias analysis mod/ref behavior.\n"
687 << "\"Unknown intrinsic.\");\n\n";
752 OS << "// Get the LLVM intrinsic that corresponds to a GCC builtin.\n";