qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 50/81] tcg: Add all_outop[]


From: Richard Henderson
Subject: Re: [PATCH v2 50/81] tcg: Add all_outop[]
Date: Fri, 10 Jan 2025 06:51:10 -0800
User-agent: Mozilla Thunderbird

On 1/9/25 15:21, Philippe Mathieu-Daudé wrote:
On 7/1/25 09:00, Richard Henderson wrote:
Add infrastructure for more consolidated output of opcodes.
The base structure allows for constraints to be either static
or dynamic, and for the existence of those constraints to
replace TCG_TARGET_HAS_* and the bulk of tcg_op_supported.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
  tcg/tcg.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++-------
  1 file changed, 53 insertions(+), 7 deletions(-)


+static const TCGOutOp outop_notreached = {
+    .static_constraint = C_NotReached,
+};
+
+static const TCGOutOp * const all_outop[NB_OPS] = {
+    [0 ... NB_OPS - 1] = &outop_notreached,
+};


@@ -3331,18 +3370,25 @@ static void process_constraint_sets(TCGContext *s)
  static const TCGArgConstraint *opcode_args_ct(const TCGOp *op)
  {
-    const TCGOpDef *def = &tcg_op_defs[op->opc];
+    TCGOpcode opc = op->opc;
+    TCGType type = TCGOP_TYPE(op);
+    unsigned flags = TCGOP_FLAGS(op);
+    const TCGOpDef *def = &tcg_op_defs[opc];
+    const TCGOutOp *outop = all_outop[opc];
      TCGConstraintSetIndex con_set;
-#ifdef CONFIG_DEBUG_TCG
-    assert(tcg_op_supported(op->opc, TCGOP_TYPE(op), TCGOP_FLAGS(op)));
-#endif
-
      if (def->flags & TCG_OPF_NOT_PRESENT) {
          return empty_cts;
      }
-    con_set = tcg_target_op_def(op->opc, TCGOP_TYPE(op), TCGOP_FLAGS(op));
+    if (outop) {

Always true,

+        con_set = outop->static_constraint;
+        if (con_set == C_Dynamic) {
+            con_set = outop->dynamic_constraint(type, flags);
+        }
+    } else {
+        con_set = tcg_target_op_def(opc, type, flags);

so unreachable. Gremlins?
Yes, this was the midnight gremlin of which we spoke.
The outop_unreached thing has to wait until the end of the conversion.


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]