This extends TableGen's AsmMatcherEmitter with code that generates
a table with tied-operand constraints. The constraints are checked
when parsing the instruction. If an operand is not equal to its tied operand,
the assembler will give an error.
Patch [2/3] in a series to add operand constraint checks for SVE's predicated ADD/SUB.
Do we need a set here? It seems like we could just used a SmallVector instead. It looks like a set is used to avoid adding duplicated constraints for an instruction, right?
But the tied constraint only gets added to one of the 2 operands (I think), see CodeGenInstructions::ParseConstraint.
Also, those constraints are referred to as tied elsewhere. AsmOperandTiedContraints would be a more consistent name I think