x86_64/ix86 SSE C99 rounding intrinsics
- The i386 backend currently has no support to inline lceil, lfloor, lrint, lround, ceil, floor, trunc, round and their C99 variants if using SSE math (as opposed to x87 math). This project fills this gap by providing expanders and optab support for the missing pieces.
Personnel
- Richard Guenther
Delivery Date
- This optimization is ready. An overall patch was posted here:
Benefits
- Faster code, 10% improvements for lucas on x86_64. In general on i686 we
avoid SSE -> x87 register moves due to the ABI if calling into the math library.
Dependencies
- Assorted fixes to the i386 backend and the middle-end regarding fast-math vs.
- finite-math-only optimizations. (patches posted and approved)
Modifications Required
The middle-end gets more conversion optabs and existing expanders for float -> int conversions are converted to conversion optabs. New expanders get added to the i386 backend.