I'm looking at writing code that runs cross platform, at least in regards to desktop-class machines, so I need to support Intel, AMD, Nvidia, and ATI.

I understand from this forum post that the AMD OpenCL compiler does not perform auto-vectorisation of wider types, and that one should instead utilise 8-bit types like float8.

Question 1: Is an Intel CPU the only OpenCL device on which one can assume auto-vectorisation will take place? In other words, is this true for none of AMD, ATI or NVidia?

Question 2: Further, if vectorisation is not handled automatically, is it safe to assume I should make use of 8-bit lines in my platform-agnostic code? Or would there potentially be a shortfall in performance on Intel platforms in that case (and if so, major or minor)?


EDIT A bit confused; I found here, in Q.15, that AMD's compiler which ATI uses, does auto-vectorise for CPU. However they don't say whether that is Intel, AMD, or both, and I can only assume they mean AMD? -- Which contradicts what I've seen elsewhere.