Home | History | Annotate | Download | only in SelectionDAG

Lines Matching refs:Constraint

2222 TargetLowering::getConstraintType(StringRef Constraint) const {
2223 unsigned S = Constraint.size();
2226 switch (Constraint[0]) {
2254 if (S > 1 && Constraint[0] == '{' && Constraint[S-1] == '}') {
2255 if (S == 8 && Constraint.substr(1, 6) == "memory") // "{memory}"
2262 /// Try to replace an X constraint, which matches anything, with another that
2276 std::string &Constraint,
2280 if (Constraint.length() > 1) return;
2282 char ConstraintLetter = Constraint[0];
2344 StringRef Constraint,
2346 if (Constraint.empty() || Constraint[0] != '{')
2348 assert(*(Constraint.end()-1) == '}' && "Not a brace enclosed constraint?");
2351 StringRef RegName(Constraint.data()+1, Constraint.size()-2);
2387 // Constraint Selection.
2389 /// Return true of this is an input operand that is a matching constraint like
2392 assert(!ConstraintCode.empty() && "No known constraint!");
2396 /// If this is an input matching constraint, this method returns the output
2399 assert(!ConstraintCode.empty() && "No known constraint!");
2403 /// Split up the constraint string from the inline assembly value into the
2406 /// If this returns an empty vector, and if the constraint string itself
2426 // Update multiple alternative constraint count.
2549 // Now select chosen alternative in each constraint.
2560 // Check and hook up tied operands, choose constraint code to use.
2582 report_fatal_error("Unsupported asm: input constraint"
2583 " with a matching output constraint of"
2606 llvm_unreachable("Invalid constraint type");
2609 /// Examine constraint type and operand type and determine a weight value.
2611 /// and the current alternative constraint selected.
2633 /// Examine constraint type and operand type and determine a weight value.
2635 /// and the current alternative constraint selected.
2638 AsmOperandInfo &info, const char *constraint) const {
2645 // Look at the constraint type.
2646 switch (*constraint) {
2689 /// Ideally, we would pick the most specific constraint possible: if we have
2696 /// 1) If there is an 'other' constraint, and if the operand is valid for
2697 /// that constraint, use it. This makes us take advantage of 'i'
2699 /// 2) Otherwise, pick the most general constraint present. This prefers
2705 assert(OpInfo.Codes.size() > 1 && "Doesn't have multiple constraint options");
2715 // If this is an 'other' constraint, see if the operand is valid for it.
2716 // For example, on X86 we might have an 'rI' constraint. If the operand
2721 "Unhandled multi-letter 'other' constraint");
2737 // This constraint letter is more general than the previous one, use it.
2750 /// Determines the constraint code and constraint type to use for the specific
2755 assert(!OpInfo.Codes.empty() && "Must have at least one constraint");