Could you clarify please whether there are any backwards compatibility issues with AVX? Should programmers consider it an added extra where supported, or will programs using it require it to run correctly?
To my understanding it's to be considered as an extra, similar to SSE.
AVX works with SSE or non-SSE code, so in that sense it is backward compatible. It added a lot of other features in addition to SSE e.g. wider vector, 3 operand instruction coding, compact and efficient encoding of instructions, all adding to give better performance.
Thank you both for your responses!
One more thing to add: There is a performance penalty for switching from SSE to AVX instructions (and vice-versa), so you should not mix them too much in your code. Try grouping them in separate blocks or use AVX only where possible.