https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61194

--- Comment #2 from vincenzo Innocente <vincenzo.innocente at cern dot ch> ---
new test code
cat cond0.cc
float x[1024];
float y[1024];
float z[1024];
float w[1024];

int k[1024];

void barX() {
  for (int i=0; i<1024; ++i) {
    k[i] = (x[i]>0) & (w[i]<y[i]);
    z[i] = (k[i]) ? z[i] : y[i];
 }
}
c++ -Ofast -Wall -fno-tree-slp-vectorize -ftree-loop-if-convert-stores -S
cond0.cc -msse4.2 -ftree-vectorizer-verbose=1

Analyzing loop at cond0.cc:9

cond0.cc:9: note: vect_recog_bool_pattern: detected: 
cond0.cc:9: note: pattern recognized: patt_23 = (int) patt_24;

cond0.cc:9: note: additional pattern stmt: patt_25 = _7 < _8 ? 1 : 0;

cond0.cc:9: note: additional pattern stmt: patt_24 = _5 > 0.0 ? patt_25 : 0;


Vectorizing loop at cond0.cc:9

cond0.cc:9: note: LOOP VECTORIZED.
cond0.cc:8: note: vectorized 1 loops in function.
c++ -v
Using built-in specs.
COLLECT_GCC=c++
COLLECT_LTO_WRAPPER=/afs/cern.ch/sw/lcg/contrib/gcc/4.8.1/x86_64-slc6-gcc48-opt/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.8.1/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: /build/vdiez/gcc-4.8.1/configure
--prefix=/build/vdiez/gcc-4.8.1-installation
--with-mpfr=/afs/cern.ch/sw/lcg/external/mpfr/3.1.2/x86_64-slc6-gcc48-opt
--with-gmp=/afs/cern.ch/sw/lcg/external/gmp/5.1.1/x86_64-slc6-gcc48-opt
--with-mpc=/afs/cern.ch/sw/lcg/external/mpc/1.0.1/x86_64-slc6-gcc48-opt
--enable-libstdcxx-time --enable-lto
--with-isl=/afs/cern.ch/sw/lcg/external/isl/0.11.1/x86_64-slc6-gcc48-opt
--with-cloog=/afs/cern.ch/sw/lcg/external/cloog/0.18.0/x86_64-slc6-gcc48-opt
--enable-languages=c,c++,fortran,go
Thread model: posix
gcc version 4.8.1 (GCC) 


c++ -Ofast -Wall -fno-tree-slp-vectorize -ftree-loop-if-convert-stores -S
cond0.cc -msse4.2 -fopt-info-vec-missed

cond0.cc:9:3: note: misalign = 0 bytes of ref x[i_18]
cond0.cc:9:3: note: misalign = 0 bytes of ref w[i_18]
cond0.cc:9:3: note: misalign = 0 bytes of ref y[i_18]
cond0.cc:9:3: note: misalign = 0 bytes of ref k[i_18]
cond0.cc:9:3: note: misalign = 0 bytes of ref z[i_18]
cond0.cc:9:3: note: misalign = 0 bytes of ref z[i_18]
cond0.cc:9:3: note: virtual phi. skip.
cond0.cc:9:3: note: num. args = 4 (not unary/binary/ternary op).
cond0.cc:9:3: note: not ssa-name.
cond0.cc:9:3: note: use not simple.
cond0.cc:9:3: note: bit-precision arithmetic not supported.
cond0.cc:9:3: note: not vectorized: relevant stmt not supported: _6 = _5 > 0.0;

cond0.cc:9:3: note: bad operation or unsupported loop bound.
Vincenzos-MacBook-Pro-2:vectorize innocent$ c++ -v
Using built-in specs.
COLLECT_GCC=c++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-apple-darwin13.1.0/4.10.0/lto-wrapper
Target: x86_64-apple-darwin13.1.0
Configured with: ../gcc-trunk/configure --disable-multilib --disable-bootstrap
--disable-libitm --enable-languages=c,c++,fortran,lto --disable-libsanitizer
--enable-lto
Thread model: posix
gcc version 4.10.0 20140430 (experimental) [trunk revision 209930] (GCC)

Reply via email to