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