On 5/5/25 22:27, Richard Henderson wrote:
+    uint64_t v1 = ti_const_val(t1);
+    uint64_t v2 = ti_const_val(t2);

Are v1 and v2 needed at all?

If starting from z1==o1 and z2==o2, you will always end up with z1|z2 == o1|o2 after these:

+        z1 = (uint32_t)z1 >> shr;
+        o1 = (uint32_t)o1 >> shr;
+        z2 = (uint64_t)((int32_t)z2 << (32 - shr));
+        o2 = (uint64_t)((int32_t)o2 << (32 - shr));

or these:

+        z1 >>= shr;
+        o1 >>= shr;
+        z2 <<= 64 - shr;
+        o2 <<= 64 - shr;

so fold_masks_zo would do the job.

Paolo


Reply via email to