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