[PATCH] D66524: [SVE][Inline-Asm] Add constraints for SVE predicate registers

Sander de Smalen via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 21 05:55:37 PDT 2019


sdesmalen added inline comments.


================
Comment at: lib/IR/InlineAsm.cpp:188
+      unsigned char C = static_cast<unsigned char>(*I);
+      assert(isdigit(C) && "Not a single digit!");
+      int N = C - '0';
----------------
`"Expected a digit"` seems more appropriate, since this code is only testing a single character.


================
Comment at: lib/IR/InlineAsm.cpp:192
+      ++I;
+      pCodes->push_back(std::string(I, I+N));
+      I += N;
----------------
StringRef can be used here instead of std::string.


================
Comment at: lib/Target/AArch64/AArch64ISelLowering.cpp:5803
+  case 'U':
+    if (constraint[1] == 'p' && (constraint[2] == 'l' || constraint[2] == 'a'))
+      weight = CW_Register;
----------------
This is missing a check that `Constraint.size() == 3`. Or perhaps it is even better to split this code out into a separate function, because this patch writes out the condition three times. Maybe something like  `PredicateConstraint isPredicateConstraint(StringRef S)`, where `PredicateConstraint` is an enum.


Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66524/new/

https://reviews.llvm.org/D66524





More information about the cfe-commits mailing list