Add some data collection of strided memory accesses for analysis. Reenable removal of duplicate instructions with better checking.
Add some data collection of strided memory accesses for analysis.
Reenable removal of duplicate instructions with better checking.

Split vectorization to two phases in case both memory access and arithmetic operations needs to be vectorized
1: vectorize memory operations only, using nonvectorized arithmetic to find offsets
2: drop unused instructions, like memory accesses for work items in the middle of vector
3: vectorize again the arithmetic operations
This should take care of case where vectorization of address computation prevented llvm to find offsets, as well as cases where not vectorizing work item id modifications causes inefficiency.

dsandersimgtec/pocl,hugwijst/pocl,jrprice/pocl,sting47/pocl,dsandersimgtec/pocl,pocl/pocl,sting47/pocl,franz/pocl,vkorhonen/pocl,pocl/pocl,sting47/pocl,pavanky/pocl,jrprice/pocl,0charleschen0/pocl,sting47/pocl,franz/pocl,rjodin/pocl,jrprice/pocl,Oblomov/pocl,pocl/pocl,hugwijst/pocl,rjodin/pocl,pavanky/pocl,maZZZu/pocl,Oblomov/pocl,0charleschen0/pocl,pavanky/pocl,sting47/pocl,franz/pocl,0charleschen0/pocl,pocl/pocl,maZZZu/pocl,jrprice/pocl,Oblomov/pocl,rjodin/pocl,maZZZu/pocl,hugwijst/pocl,hugwijst/pocl,vkorhonen/pocl,rjodin/pocl,franz/pocl,dsandersimgtec/pocl,maZZZu/pocl,Oblomov/pocl,hugwijst/pocl,franz/pocl,pocl/pocl,pavanky/pocl,0charleschen0/pocl,dsandersimgtec/pocl,vkorhonen/pocl,vkorhonen/pocl,Oblomov/pocl