#pragma GCC unroll support
Mike Stump
mikestump@comcast.net
Mon Dec 22 21:51:00 GMT 2014
So, I have a rough cut of a new feature to add pragma GCC unroll support to gcc. It is safe wrt the test suite and code-gen, but there are some corners that I need help or suggestions on how to round off nicely.
Things to think about, can we put this in even if we have TODO support for C++ template support? I think that is only 2-5 lines away from completion, but one needs to play peak-a-boo with some data (the unroll count) and I wanted to let pt fingers decide where to hide the data. See RANGE_FOR_IVDEP for how I want to do it.
Can I increase the size of all annotations to 3 from 2? It seemed safer, easier than trying to subdivide it.
I didn’t engineer ivdeps and unroll together. Does it sound reasonable to allow both to be used at the same time on the same loop? If so, I can add the two other cases, presently I just handle one of them then the loop.
Fortran support is left to the fortran people, if they want to do it. I wired it up tantalizingly close for them to complete.
See ICK in the code. I was unsure how to resolve that code.
Does unroll 8 mean that the loop is repeated 8 times?
Can I turn on peeling in try_peel_loop by simply wanted to do it for 1 loop?
I support using -1 for a directive that says, don’t peel, don’t unroll. As a UI issue, I think this is wrong. I want to to be either 0 or 1, those two seem better. But, not sure which is the right one of the two. Which number says, don’t unroll, I’m smarter than you think.
If we have a loop that we know can only be unroll 7 times, and the user says unroll 8, should we unroll it 7 times? Presently I do. The other option, is to ignore the directive when we know it is non-sensicle.
Yes, I’m aware that this isn’t the right phase for this, but such are business cycles. It would not go in until we reenter stage 1. I see no value in trying to squeeze it in past stage 1.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: unroll-2.diffs.txt
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20141222/cafb3f23/attachment.txt>
More information about the Gcc-patches
mailing list