This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/88013] New: can't vectorize rgb to grayscale conversion code


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

            Bug ID: 88013
           Summary: can't vectorize rgb to grayscale conversion code
           Product: gcc
           Version: 7.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hoganmeier at gmail dot com
  Target Milestone: ---

#include <stdint.h>

void reference_convert(uint8_t * __restrict dest, uint8_t * __restrict src, int
n)
{
  for (int i=0; i<n; i++)
  {
    int r = *src++;
    int g = *src++;
    int b = *src++;
    int y = (r*77)+(g*151)+(b*28);
    *dest++ = y/256;
  }
}

$ arm-gcc -march=armv7-a -O3 -ffast-math -fopt-info-vec-omp-optimized-missed

gives the following notes on the loop line:
unsupported data-type int
can't determine vectorization factor.
vector alignment may not be reachable
Aligned load, but unsupported type.
not vectorized: relevant stmt not supported: _1 = *src_31;
bad operation or unsupported loop bound.
vector alignment may not be reachable
no array mode for DI[3]
extract even/odd not supported by target
bad operation or unsupported loop bound.

Vectorization works for x64.
https://godbolt.org/z/FPG3k_

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]