On 8/23/07, Paolo Bonzini <[EMAIL PROTECTED]> wrote: > I've added 5 minutes ago an XFAILed test for exactly this code. OTOH, I > have also committed a fix that will avoid producing tons of shuffle and > unpacking instructions when function "bar" is compiled with "-msse" but > without "-msse2". Thanks.
> I'm also going to file a missed optimization bug soon. Ditto. > I'm curious, does ICC support vector arithmetic like this? Do both > functions compile? What code does it produce for bar? No, icc9/10 only provide basic support for that extension (and then only on linux i think) # /opt/intel/cce/9.1.051/bin/icpc regressionorbugfix.cc regressionorbugfix.cc(5): error: no operator "|" matches these operands operand types are: v4sf_t | v4sf_t return a + (b | c); ^ regressionorbugfix.cc(8): error: no operator "|" matches these operands operand types are: v4si_t | v4si_t return a + (v4sf_t) ((v4si_t) b | (v4si_t) c); ^ but then it's more aggressive about intrinsics than gcc. Like i said somewhere i got slightly better results when using that extension than intrinsics with gcc 4.3 but haven't checked if i could get the same result with builtins yet.