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

            Bug ID: 119224
           Summary: RISC-V: sad 16x16 spilling since
                    r15-6673-gb755c151fde4ad
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vineetg at gcc dot gnu.org
                CC: jeffreyalaw at gmail dot com, rdapp at gcc dot gnu.org
  Target Milestone: ---

-O3 -ffast-math -march=rv64gcv_zvl256b -mtune=generic-ooo -mrvv-vector-bits=zvl

static int abs(int i)
{
    return (i < 0 ? -i : i);
}

int x264_pixel_sad_16x16(uint8_t *pix1, int i_stride_pix1, uint8_t *pix2, int
i_stride_pix2 )
{
        int i_sum = 0;
        for( int y = 0; y < 16; y++ )
        {
                for( int x = 0; x < 16; x++ )
                {
                        i_sum += abs( pix1[x] - pix2[x] );
                }
                pix1 += i_stride_pix1; pix2 += i_stride_pix2;
        }
        return i_sum;
}

grep "sp," x264_pixel_sad_16x16.s
x264_pixel_sad_16x16.s: addi    sp,sp,-48
x264_pixel_sad_16x16.s: addi    a0,sp,16
x264_pixel_sad_16x16.s: addi    a0,sp,24
x264_pixel_sad_16x16.s: addi    a0,sp,32
x264_pixel_sad_16x16.s: addi    a6,sp,8
x264_pixel_sad_16x16.s: addi    t6,sp,40
x264_pixel_sad_16x16.s: addi    a4,sp,16
x264_pixel_sad_16x16.s: addi    a4,sp,24
x264_pixel_sad_16x16.s: addi    a4,sp,32
x264_pixel_sad_16x16.s: addi    a4,sp,8
x264_pixel_sad_16x16.s: addi    sp,sp,48

Note that -mtune=generic-ooo is key to reproducing, with fully unrolled loop.
For default tune rocket, it generates a loop.

Reply via email to