LADSoft / OrangeC

OrangeC Compiler And Tool Chain
http://ladsoft.tripod.com/orange_c_compiler.html
Other
285 stars 39 forks source link

Optimizer: Add vectorization as an optimization #303

Open chuggafan opened 5 years ago

chuggafan commented 5 years ago

Long and hard one here, but well worth it since we now have SSE support: Vectorization, This is a hard topic and one that is in great research all the time, but SSE does a few things for us that we can (ab)use to gain performance.

Since the instructions can be used to do integer arithmetic in packed form, we can use them to do in less instructions the exact same thing, an example shown in this Wikipedia article

I did digging a while ago for this as well, LLVM's polly tool has a lot of useful publications about polyhedral optimizations (which are used for Vectorization)

Wikipedia gives a nice overview

There's quite a lot of information about automatic vectorization out there, however, I've found that there's no platform-specific papers to be had, so applying the vectorization is the part that would most likely be difficult.

chuggafan commented 4 years ago

Just going back into this to mark this as a "milestone 5" issue, at least in text.