Lines Matching full:constraint
2669 TargetLowering::getConstraintType(const std::string &Constraint) const {
2670 if (Constraint.size() == 1) {
2671 switch (Constraint[0]) {
2699 if (Constraint.size() > 1 && Constraint[0] == '{' &&
2700 Constraint[Constraint.size()-1] == '}')
2705 /// LowerXConstraint - try to replace an X constraint, which matches anything,
2719 std::string &Constraint,
2723 if (Constraint.length() > 1) return;
2725 char ConstraintLetter = Constraint[0];
2784 getRegForInlineAsmConstraint(const std::string &Constraint,
2786 if (Constraint[0] != '{')
2788 assert(*(Constraint.end()-1) == '}' && "Not a brace enclosed constraint?");
2791 StringRef RegName(Constraint.data()+1, Constraint.size()-2);
2815 // Constraint Selection.
2818 /// a matching constraint like "4".
2820 assert(!ConstraintCode.empty() && "No known constraint!");
2824 /// getMatchedOperand - If this is an input matching constraint, this method
2827 assert(!ConstraintCode.empty() && "No known constraint!");
2832 /// ParseConstraints - Split up the constraint string from the inline
2835 /// If this returns an empty vector, and if the constraint string itself
2856 // Update multiple alternative constraint count.
2977 // Now select chosen alternative in each constraint.
2988 // Check and hook up tied operands, choose constraint code to use.
3008 report_fatal_error("Unsupported asm: input constraint"
3009 " with a matching output constraint of"
3035 llvm_unreachable("Invalid constraint type");
3038 /// Examine constraint type and operand type and determine a weight value.
3040 /// and the current alternative constraint selected.
3062 /// Examine constraint type and operand type and determine a weight value.
3064 /// and the current alternative constraint selected.
3067 AsmOperandInfo &info, const char *constraint) const {
3074 // Look at the constraint type.
3075 switch (*constraint) {
3118 /// Ideally, we would pick the most specific constraint possible: if we have
3125 /// 1) If there is an 'other' constraint, and if the operand is valid for
3126 /// that constraint, use it. This makes us take advantage of 'i'
3128 /// 2) Otherwise, pick the most general constraint present. This prefers
3134 assert(OpInfo.Codes.size() > 1 && "Doesn't have multiple constraint options");
3144 // If this is an 'other' constraint, see if the operand is valid for it.
3145 // For example, on X86 we might have an 'rI' constraint. If the operand
3150 "Unhandled multi-letter 'other' constraint");
3166 // This constraint letter is more general than the previous one, use it.
3179 /// ComputeConstraintToUse - Determines the constraint code and constraint
3185 assert(!OpInfo.Codes.empty() && "Must have at least one constraint");