Hi Richard,
On 16 January 2013 06:58, Richard Henderson wrote:
>
> You could, however, use two CCmodes for the result of the compares:
>
> (set (reg:CC r) (compare:CC (reg:SI x) (reg:SI y)))
> => cmp r, x, y
>
> (set (reg:CCU r) (compare:CCU (reg:SI x) (reg:SI y)))
> => cmpu r, x, y
>
> a
LT: return "cmp\tr18,%z2,%z1\;blti%?\tr18,%3 #LT";
case GTU:return "cmpu\tr18,%z1,%z2\;blti%?\tr18,%3 #GTU";
case LEU:return "cmpu\tr18,%z1,%z2\;bgei%?\tr18,%3";
case GEU:return "cmpu\tr18,%z2,%z1\;bgei%?\tr18,%3";
Loop unrolling (-funroll-loops) for microblaze is ineffectual on the gcc
4.6/4.7/4.8 branches.
This previously worked on an out of tree gcc 4.1.2, and I believe the relevant
diff to be the use of UNSPEC_CMP and UNSPEC_CMPU to create two unique
instructions for signed_compare and unsigned_compare i