Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Integer multitude vectorization

german_kolosov
Beginner
491 Views
Why the compiler does not support 16-bit integer multitude vectorization?.
for example loop:
DO I = 1, N
A(I,J) = A(I,J) + C*A(I,L)
END DO
When A and C are INTEGER*2 the compiler outs "unsupported loop structure"
But MMX has PMADDWD command for such operations.
0 Kudos
2 Replies
Steven_L_Intel1
Employee
491 Views
I don't yet know the details of what Intel Fortran's vectorization is capable of, but I do have experience with other vectorizing compilers and they wouldn't have vectorized INTEGER*2 arrays either. In fact, a lot of normal optimizations don't tend to happen when using 8 or 16-bit integers. Is there a particular reason you chose INTEGER*2? What happens if you make these INTEGER*4?

Steve
0 Kudos
german_kolosov
Beginner
491 Views
Thank You for answer.
I have no restrictions to use INTEGER*4, but I know that MMX doesn't have any 32-bit multitude commands.
It probably causes to message from compiler: unsupported data type.
0 Kudos
Reply