[llvm] [DecoderEmitter] Support for DecodeOrder and `resolve-conflicts-try-all` (PR #157948)

Sergei Barannikov via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 16 07:15:30 PDT 2025


================
@@ -1598,6 +1726,19 @@ void FilterChooser::doFilter() {
     return;
   }
 
+  // If we were unable to find a useful filter and there are multiple decode
+  // orders involved, split the candidates by decode order and create per decode
+  // order choosers.
+  if (hasMultipleDecodeOrders()) {
----------------
s-barannikov wrote:

> hasCompleteDecoder seems to set DecodeComplete = false whenever `decodeToMCInst` return Fail.

This only happens with `TryDecode`; `Decode` never changes `DecodeComplete` and so it remains `true`, AFAICT

> the condition (DecodeComplete == true and S != Fail) will never happen

It can happen if `Decode` succeeds (or returns `SoftFail`).

> except in the `bits<0>` case, which might be an oversight

It might be. I didn't add a check for `hasCompleteDecoder` because I assumed that the no-bits decoder function can never fail (can it?).


https://github.com/llvm/llvm-project/pull/157948


More information about the llvm-commits mailing list