bit_value ^= pass_flags[j]
             m.d.comb += next_bits.part(i, 1).eq(bit_value)
 
-        # XXX using a list to accumulate the bits and then using bool
-        # is IMPORTANT.  if done using |= it results in a chain of OR gates.
-        l = [] # next_compare_rhs
+        # merge/select multi-bit trial_compare_rhs_values, to go
+        # into compare_rhs. XXX (only one of these will succeed?)
+        next_compare_rhs = 0
         for i in range(radix):
             next_flag = pass_flags[i + 1] if i + 1 < radix else 0
             selected = Signal(name=f"selected_{i}", reset_less=True)
             m.d.comb += selected.eq(pass_flags[i] & ~next_flag)
-            l.append(Mux(selected, trial_compare_rhs_values[i], 0)
-
-        # concatenate the list of Mux results together and OR them using
-        # the bool operator.
-        m.d.comb += self.o.compare_rhs.eq(Cat(*l).bool())
+            next_compare_rhs |= Mux(selected,
+                                    trial_compare_rhs_values[i],
+                                    0)
 
+        m.d.comb += self.o.compare_rhs.eq(next_compare_rhs)
         m.d.comb += self.o.root_times_radicand.eq(self.i.root_times_radicand
                                                   + ((self.i.divisor_radicand
                                                       * next_bits)