If-conversion and conditional move.
Dan Towner
dant@picochip.com
Tue May 6 14:28:00 GMT 2003
Hi all,
I have recently been adding conditional move instructions to a GCC port
for a 16-bit DSP (i.e., movhicc, etc.). The DSP only supports
move-on-equals and move-on-not-equals, not the whole variety of LE, GT,
LEU, and so on. The movhicc pattern itself is written to fail if an
attempt is made to generate a conditional move using an unsupported
comparison, but the if-conversion code (ifcvt.c) doesn't seem to check
that a valid comparison is used. For example, if a simple code block is
found with a GT comparison controlling entry, the if-conversion code
attempts to generate a conditional move for a GT comparison, which isn't
supported. However, rather than giving up, and not performing the
conversion, the if-conversion code aborts instead.
What is the easiest way to go about solving this problem?
1) change the abort to allow graceful failure, with
fallback to using branches
2) prevent the if-conversion from even being attempted when an
unsupported comparison is used?
thanks,
dan.
=============================================================================
Daniel Towner
picoChip Designs Ltd., Riverside Buildings, 108, Walcot Street, BATH,
BA1 5BG
dant@picochip.com
07786 702589
More information about the Gcc
mailing list