Lines Matching refs:Constraint
1055 // `m', this constraint can be used in asm statements that
1084 std::string convertConstraint(const char *&Constraint) const override {
1086 switch (*Constraint) {
1089 // Two-character constraint; add "^" hint for later parsing.
1090 R = std::string("^") + std::string(Constraint, 2);
1091 Constraint++;
1094 return TargetInfo::convertConstraint(Constraint);
2654 bool validateOutputSize(StringRef Constraint, unsigned Size) const override;
2656 bool validateInputSize(StringRef Constraint, unsigned Size) const override;
2658 virtual bool validateOperandSize(StringRef Constraint, unsigned Size) const;
2660 std::string convertConstraint(const char *&Constraint) const override;
3872 // Shift the pointer to the second character of the constraint.
3885 // Constraint 'f' cannot be used for output operands.
3915 bool X86TargetInfo::validateOutputSize(StringRef Constraint,
3917 // Strip off constraint modifiers.
3918 while (Constraint[0] == '=' ||
3919 Constraint[0] == '+' ||
3920 Constraint[0] == '&')
3921 Constraint = Constraint.substr(1);
3923 return validateOperandSize(Constraint, Size);
3926 bool X86TargetInfo::validateInputSize(StringRef Constraint,
3928 return validateOperandSize(Constraint, Size);
3931 bool X86TargetInfo::validateOperandSize(StringRef Constraint,
3933 switch (Constraint[0]) {
3951 switch (Constraint[1]) {
3972 X86TargetInfo::convertConstraint(const char *&Constraint) const {
3973 switch (*Constraint) {
3987 return std::string(1, *Constraint);
4025 bool validateOperandSize(StringRef Constraint,
4027 switch (Constraint[0]) {
4043 return X86TargetInfo::validateOperandSize(Constraint, Size);
5324 std::string convertConstraint(const char *&Constraint) const override {
5326 switch (*Constraint) {
5327 case 'U': // Two-character constraint; add "^" hint for later parsing.
5328 R = std::string("^") + std::string(Constraint, 2);
5329 Constraint++;
5335 return std::string(1, *Constraint);
5340 validateConstraintModifier(StringRef Constraint, char Modifier, unsigned Size,
5342 bool isOutput = (Constraint[0] == '=');
5343 bool isInOut = (Constraint[0] == '+');
5345 // Strip off constraint modifiers.
5346 while (Constraint[0] == '=' ||
5347 Constraint[0] == '+' ||
5348 Constraint[0] == '&')
5349 Constraint = Constraint.substr(1);
5351 switch (Constraint[0]) {
5898 validateConstraintModifier(StringRef Constraint, char Modifier, unsigned Size,
5900 // Strip off constraint modifiers.
5901 while (Constraint[0] == '=' || Constraint[0] == '+' || Constraint[0] == '&')
5902 Constraint = Constraint.substr(1);
5904 switch (Constraint[0]) {
5916 // By default an 'r' constraint will be in the 'x'
7465 std::string convertConstraint(const char *&Constraint) const override {
7467 switch (*Constraint) {
7468 case 'Z': // Two-character constraint; add "^" hint for later parsing.
7469 if (Constraint[1] == 'C') {
7470 R = std::string("^") + std::string(Constraint, 2);
7471 Constraint++;
7476 return TargetInfo::convertConstraint(Constraint);