Home | History | Annotate | Download | only in SelectionDAG

Lines Matching refs:Constraint

2134 TargetLowering::getConstraintType(StringRef Constraint) const {
2135 unsigned S = Constraint.size();
2138 switch (Constraint[0]) {
2166 if (S > 1 && Constraint[0] == '{' && Constraint[S-1] == '}') {
2167 if (S == 8 && Constraint.substr(1, 6) == "memory") // "{memory}"
2174 /// LowerXConstraint - try to replace an X constraint, which matches anything,
2188 std::string &Constraint,
2192 if (Constraint.length() > 1) return;
2194 char ConstraintLetter = Constraint[0];
2254 StringRef Constraint,
2256 if (Constraint.empty() || Constraint[0] != '{')
2258 assert(*(Constraint.end()-1) == '}' && "Not a brace enclosed constraint?");
2261 StringRef RegName(Constraint.data()+1, Constraint.size()-2);
2297 // Constraint Selection.
2300 /// a matching constraint like "4".
2302 assert(!ConstraintCode.empty() && "No known constraint!");
2306 /// getMatchedOperand - If this is an input matching constraint, this method
2309 assert(!ConstraintCode.empty() && "No known constraint!");
2313 /// ParseConstraints - Split up the constraint string from the inline
2316 /// If this returns an empty vector, and if the constraint string itself
2336 // Update multiple alternative constraint count.
2459 // Now select chosen alternative in each constraint.
2470 // Check and hook up tied operands, choose constraint code to use.
2492 report_fatal_error("Unsupported asm: input constraint"
2493 " with a matching output constraint of"
2517 llvm_unreachable("Invalid constraint type");
2520 /// Examine constraint type and operand type and determine a weight value.
2522 /// and the current alternative constraint selected.
2544 /// Examine constraint type and operand type and determine a weight value.
2546 /// and the current alternative constraint selected.
2549 AsmOperandInfo &info, const char *constraint) const {
2556 // Look at the constraint type.
2557 switch (*constraint) {
2600 /// Ideally, we would pick the most specific constraint possible: if we have
2607 /// 1) If there is an 'other' constraint, and if the operand is valid for
2608 /// that constraint, use it. This makes us take advantage of 'i'
2610 /// 2) Otherwise, pick the most general constraint present. This prefers
2616 assert(OpInfo.Codes.size() > 1 && "Doesn't have multiple constraint options");
2626 // If this is an 'other' constraint, see if the operand is valid for it.
2627 // For example, on X86 we might have an 'rI' constraint. If the operand
2632 "Unhandled multi-letter 'other' constraint");
2648 // This constraint letter is more general than the previous one, use it.
2661 /// ComputeConstraintToUse - Determines the constraint code and constraint
2667 assert(!OpInfo.Codes.empty() && "Must have at least one constraint");