Lines Matching full:constraint
2631 TargetLowering::getConstraintType(const std::string &Constraint) const {
2632 if (Constraint.size() == 1) {
2633 switch (Constraint[0]) {
2661 if (Constraint.size() > 1 && Constraint[0] == '{' &&
2662 Constraint[Constraint.size()-1] == '}')
2667 /// LowerXConstraint - try to replace an X constraint, which matches anything,
2681 std::string &Constraint,
2685 if (Constraint.length() > 1) return;
2687 char ConstraintLetter = Constraint[0];
2746 getRegForInlineAsmConstraint(const std::string &Constraint,
2748 if (Constraint[0] != '{')
2750 assert(*(Constraint.end()-1) == '}' && "Not a brace enclosed constraint?");
2753 StringRef RegName(Constraint.data()+1, Constraint.size()-2);
2777 // Constraint Selection.
2780 /// a matching constraint like "4".
2782 assert(!ConstraintCode.empty() && "No known constraint!");
2786 /// getMatchedOperand - If this is an input matching constraint, this method
2789 assert(!ConstraintCode.empty() && "No known constraint!");
2794 /// ParseConstraints - Split up the constraint string from the inline
2797 /// If this returns an empty vector, and if the constraint string itself
2818 // Update multiple alternative constraint count.
2939 // Now select chosen alternative in each constraint.
2950 // Check and hook up tied operands, choose constraint code to use.
2970 report_fatal_error("Unsupported asm: input constraint"
2971 " with a matching output constraint of"
2987 default: llvm_unreachable("Unknown constraint type!");
3000 /// Examine constraint type and operand type and determine a weight value.
3002 /// and the current alternative constraint selected.
3024 /// Examine constraint type and operand type and determine a weight value.
3026 /// and the current alternative constraint selected.
3029 AsmOperandInfo &info, const char *constraint) const {
3036 // Look at the constraint type.
3037 switch (*constraint) {
3080 /// Ideally, we would pick the most specific constraint possible: if we have
3087 /// 1) If there is an 'other' constraint, and if the operand is valid for
3088 /// that constraint, use it. This makes us take advantage of 'i'
3090 /// 2) Otherwise, pick the most general constraint present. This prefers
3096 assert(OpInfo.Codes.size() > 1 && "Doesn't have multiple constraint options");
3106 // If this is an 'other' constraint, see if the operand is valid for it.
3107 // For example, on X86 we might have an 'rI' constraint. If the operand
3112 "Unhandled multi-letter 'other' constraint");
3128 // This constraint letter is more general than the previous one, use it.
3141 /// ComputeConstraintToUse - Determines the constraint code and constraint
3147 assert(!OpInfo.Codes.empty() && "Must have at least one constraint");