Hi,
I just tried whether I can make use of the scalar access members defined for all __m128/256 types in the ICC intrinsics headers. But ICC thinks those types are classes while at the same time they are not classes. See for yourself:
#include <xmmintrin.h>
int main() {
__m128 v;
v.m128_f32[0] = 0.f;
v.foo[0] = 0.f;
return 0;
}
When I compile this with 'icpc main.cpp' I get:
main.cpp(4): error: expression must have class type v.m128_f32[0] = 0.f; ^ main.cpp(5): error: class "__m128" has no member "foo" v.foo[0] = 0.f; ^ main.cpp(5): error: expression must have class type v.foo[0] = 0.f; ^ compilation aborted for main.cpp (code 2)
Note how ICC says 'class "__m128"...' and for the same object 'must have class type'. If __m128 is not class type, what else could it be? A fundamental type. I'd be happy if it were, but it's not. Something is not as it was meant to be, I'd say...




