http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50310
--- Comment #3 from Zdenek Sojka <zsojka at seznam dot cz> 2011-09-07 04:59:06 UTC --- For a very similiar testcase: double s1[4]; double s2[4]; long long e[4]; void foo(void) { int i; for (i = 0; i < 4; i++) e[i] = __builtin_isunordered(s1[i], s2[i]) && s1[i] != s2[i] ? -1 : 0; } Compilation fails with: $ gcc -O -mavx -ftree-vectorize testcase2.c /tmp/cc7w0heQ.s: Assembler messages: /tmp/cc7w0heQ.s:17: Error: operand type mismatch for `vpand' or $ gcc -O -mavx -ftree-vectorize testcase2.c -masm=intel /tmp/ccyNaxE9.s: Assembler messages: /tmp/ccyNaxE9.s:18: Error: operand size mismatch for `vpand' (-mavx is needed) I don't know if that's related, GCC 4.6 generates very different code. My as might be outdated as well.