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

--- Comment #1 from Paul Hua <paul.hua.gm at gmail dot com> ---
paulhua@gcc122:~/test/debug_msa$ cat v16i8_cmpi.i
typedef signed char v16i8 __attribute__ ((vector_size(16)));
v16i8 test31_s_v16i8 (v16i8 i) {
        return i < 5;
}

good asm:

test31_s_v16i8:
        .frame  $sp,16,$31              # vars= 0, regs= 1/0, args= 0, gp= 0
        .mask   0x10000000,-8
        .fmask  0x00000000,0
        daddiu  $sp,$sp,-16
        sd      $28,8($sp)
        lui     $28,%hi(%neg(%gp_rel(test31_s_v16i8)))
        daddu   $28,$28,$25
        daddiu  $28,$28,%lo(%neg(%gp_rel(test31_s_v16i8)))
        insert.d        $w0[0],$4
        insert.d        $w0[1],$5
        clti_s.b        $w0,$w0,5
        copy_s.d        $2,$w0[0]
        copy_s.d        $3,$w0[1]
        ld      $28,8($sp)
        .set    noreorder
        .set    nomacro
        j       $31
        daddiu  $sp,$sp,16

bad asm:

test31_s_v16i8:
        .frame  $sp,32,$31              # vars= 16, regs= 1/0, args= 0, gp= 0
        .mask   0x10000000,-8
        .fmask  0x00000000,0
        daddiu  $sp,$sp,-32
        sd      $28,24($sp)
        lui     $28,%hi(%neg(%gp_rel(test31_s_v16i8)))
        daddu   $28,$28,$25
        daddiu  $28,$28,%lo(%neg(%gp_rel(test31_s_v16i8)))
        insert.d        $w0[0],$4
        insert.d        $w0[1],$5
        clti_s.b        $w0,$w0,5
        st.b    $w0,0($sp)
        copy_s.d        $2,$w0[0]
        copy_s.d        $3,$w0[1]
        ld      $28,24($sp)
        .set    noreorder
        .set    nomacro
        j       $31
        daddiu  $sp,$sp,32

cmd:

 ~/build/gcc-r266385_obj/gcc/cc1 -fpreprocessed v16i8_cmpi.i -mel -quiet
-dumpbase v16i8_cmpi.c -mmsa -march=mips64r2 -mabi=64 -mllsc -mips64r2
-mno-shared -auxbase v16i8_cmpi -O1 -version -o  bad.s

Reply via email to