https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117722
Bug ID: 117722
Summary: RISC-V: Failed to vectorize x264_pixel_sad_4x4
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: juzhe.zhong at rivai dot ai
Target Milestone: ---
#include <stdint.h>
#include <math.h>
/****************************************************************************
* pixel_sad_WxH
****************************************************************************/
#define PIXEL_SAD_C( name, lx, ly ) \
int name( uint8_t *pix1, int i_stride_pix1, \
uint8_t *pix2, int i_stride_pix2 ) \
{ \
int i_sum = 0; \
for( int y = 0; y < ly; y++ ) \
{ \
for( int x = 0; x < lx; x++ ) \
{ \
i_sum += abs( pix1[x] - pix2[x] ); \
} \
pix1 += i_stride_pix1; \
pix2 += i_stride_pix2; \
} \
return i_sum; \
}
PIXEL_SAD_C( x264_pixel_sad_4x4, 4, 4 )
The code comes from SPEC INT 2017 X264
RISC-V failed to vectorize it wheras ARM can perfectly vectorize it.
https://godbolt.org/z/rKbTGsdjh