X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Fops.expect.c;h=f036bed320f8137f628142ceb5e679208bba656e;hb=ea43585b82e86b5c393ead41963ba6c2eca157c7;hp=abca698340714b6b62df3dbb5e5807b36734f933;hpb=622eb2eff8349fa0a6675ce3213ab8f8fb1c1798;p=ia32rtools.git diff --git a/tests/ops.expect.c b/tests/ops.expect.c index abca698..f036bed 100644 --- a/tests/ops.expect.c +++ b/tests/ops.expect.c @@ -6,6 +6,7 @@ int sub_test() u32 edx; u32 esi; u32 edi; + u32 cond_c; u32 cond_z; u64 tmp64; @@ -34,12 +35,26 @@ loop: edx = (s32)eax >> 31; // cdq eax = ecx ? __builtin_ffs(ecx) - 1 : 0; // bsf tmp64 = ((u64)edx << 32) | eax; - tmp64 = (s64)tmp64 <<= LOBYTE(ecx); + tmp64 = (s64)tmp64 << LOBYTE(ecx); edx = tmp64 >> 32; eax = tmp64; // allshl + edi = eax; tmp64 = ((u64)edx << 32) | eax; - tmp64 = (s64)tmp64 >>= LOBYTE(ecx); + tmp64 = (s64)tmp64 >> LOBYTE(ecx); edx = tmp64 >> 32; eax = tmp64; // allshr eax = __builtin_bswap32(eax); + ecx ^= eax; + tmp64 = (u64)eax + ecx; + cond_c = tmp64 >> 32; + eax = (u32)tmp64; + cond_z = (eax == 0); // add64 + while (ecx != 0) { + cond_c = *(u8 *)esi < *(u8 *)edi; + cond_z = (*(u8 *)esi == *(u8 *)edi); esi += 1, edi += 1; + ecx--; + if (cond_z != 0) break; + } // repne cmps + LOBYTE(ecx) = (!cond_z); + LOBYTE(ecx) += (u8)ecx + cond_c; eax = 1; return eax; }