[llvm] [ARM][TableGen][MC] Change the ARM mnemonic operands to be optional for ASM parsing (PR #83436)
Sergei Barannikov via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 1 17:48:58 PST 2024
================
@@ -608,12 +627,18 @@ struct MatchableInfo {
void buildInstructionResultOperands();
void buildAliasResultOperands(bool AliasConstraintsAreChecked);
- /// operator< - Compare two matchables.
- bool operator<(const MatchableInfo &RHS) const {
+ /// shouldBeMatchedBefore - Compare two matchables for ordering.
+ bool shouldBeMatchedBefore(const MatchableInfo &RHS,
+ const CodeGenTarget &Target) const {
// The primary comparator is the instruction mnemonic.
if (int Cmp = Mnemonic.compare_insensitive(RHS.Mnemonic))
return Cmp == -1;
+ // Sort by the resultant instuctions size, eg. for ARM instructions
+ // we must choose the smallest matching instruction.
+ if (Target.getPreferSmallerInstructions() && ResInstSize != RHS.ResInstSize)
+ return ResInstSize < RHS.ResInstSize;
+
----------------
s-barannikov wrote:
I think this check should be tie-breaking rather than defining, and so it should be moved below, after we've compared the number of operands and their classes.
Also, does this check supersede the AVX/AVX512 resolution below?
https://github.com/llvm/llvm-project/pull/83436
More information about the llvm-commits
mailing list