On Thu, 2023-08-31 at 20:48 +0800, Yang Yujie wrote:
> * Support options for LoongArch SIMD extensions:
>   new configure options --with-simd={none,lsx,lasx};
>   new compiler option -msimd={none,lsx,lasx};
>   new driver options -m[no]-l[a]sx.

Hmm... In my build (a cross compiler configured with ../gcc/configure --
target=loongarch64-linux-gnu --with-system-zlib) I have:

$ cat lasx.c
int x __attribute__((vector_size(32)));
int y __attribute__((vector_size(32)));
void test(void) { x += y; }
$ gcc/cc1 lasx.c -msimd=lasx -o- -nostdinc -mexplicit-relocs -O2

... ...

        pcalau12i       $r12,%pc_hi20(.LANCHOR0)
        addi.d  $r12,$r12,%pc_lo12(.LANCHOR0)
        xvld    $xr0,$r12,0
        xvld    $xr1,$r12,32
        xvadd.w $xr0,$xr0,$xr1
        xvst    $xr0,$r12,0
        jr      $r1

... ...

This seems perfectly fine.  But:

$ gcc/xgcc -B gcc lasx.c -mlasx -o- -nostdinc -mexplicit-relocs -O2 -S

... ...

test:
.LFB0 = .
        pcalau12i       $r12,%pc_hi20(.LANCHOR0)
        addi.d  $r12,$r12,%pc_lo12(.LANCHOR0)
        addi.d  $r3,$r3,-16
.LCFI0 = .
        st.d    $r23,$r3,8
.LCFI1 = .
        ldptr.w $r7,$r12,0
        ldptr.w $r23,$r12,32
        ldptr.w $r6,$r12,8

... ... (no SIMD instructions)

Is this a bug in the driver or I missed something?

-- 
Xi Ruoyao <xry...@xry111.site>
School of Aerospace Science and Technology, Xidian University

Reply via email to