https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120362
Bug ID: 120362
Summary: [GCC-15.1] Illegal Insn when run spec2017 511 ref size
Product: gcc
Version: 15.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: pan2.li at intel dot com
Target Milestone: ---
There will be an illegal insn when run spec17 511 with below command:
runcpu -c gcc-15-rvv_fix.cfg --action=validate --size=ref --noreportable
--iterations=1 --tune=base --copies=1 511
compile option are: "-O3 -march=rv64gcvb_zvl256b -mrvv-vector-bits=zvl"
[89405.212442] CPU: 0 PID: 5724 Comm: povray_r_base.g Not tainted 6.6.36
#2.0~rc7.2
[89405.219881] CPU: 7 PID: 5725 Comm: povray_r_base.g Not tainted 6.6.36
#2.0~rc7.2
[89405.225214] Hardware name: spacemit k1-x deb1 board (DT)
[89405.232480] Hardware name: spacemit k1-x deb1 board (DT)
[89405.239748] epc : 00000000000b29e8 ra : 00000000000b2a30 sp :
0000003fda481eb0
[89405.247023] epc : 00000000000b29e8 ra : 00000000000b2a30 sp :
0000003fdb576eb0
[89405.254308] gp : 0000000000101240 tp : 0000003fbce47dc0 t0 :
0000003fbd2302a0
[89405.261574] gp : 0000000000101240 tp : 0000003fb85d6dc0 t0 :
0000003fb89bf2a0
[89405.268840] t1 : 0000003fbce6f4ac t2 : 0000000000000006 s0 :
0000000000101788
[89405.276088] t1 : 0000003fb85fe4ac t2 : 0000000000000006 s0 :
0000000000101788
[89405.283354] s1 : 0000003fda482218 a0 : 0000000000101788 a1 :
0000003fda482218
[89405.290602] s1 : 0000003fdb577218 a0 : 0000000000101788 a1 :
0000003fdb577218
[89405.297867] a2 : 0000003fda482230 a3 : 0000000000000000 a4 :
0000003fda4820b0
[89405.303223] a2 : 0000003fdb577230 a3 : 0000000000000000 a4 :
0000003fdb5770b0
[89405.311183] a5 : 00000000000dd388 a6 : 0000000000000000 a7 :
0000003fbcf85040
[89405.322831] a5 : 00000000000dd388 a6 : 0000000000000000 a7 :
0000003fb8714040
[89405.330280] s2 : 0000000000000002 s3 : 00000000000f8d10 s4 :
0000000000012c2e
[89405.335636] s2 : 0000000000000002 s3 : 00000000000f8d10 s4 :
0000000000012c2e
[89405.342911] s5 : 0000003fda482230 s6 : 00000000000f8d10 s7 :
0000003fbd22ed68
[89405.350200] s5 : 0000003fdb577230 s6 : 00000000000f8d10 s7 :
0000003fb89bdd68
[89405.357485] s8 : 0000003fbd22f030 s9 : 0000000000000000 s10:
0000002ab7befed8
[89405.364754] s8 : 0000003fb89be030 s9 : 0000000000000000 s10:
0000002ae6fc0ed8
[89405.372029] s11: 0000002ab7befee4 t3 : 0000003fbd21e922 t4 :
000000000003642e
[89405.379298] s11: 0000002ae6fc0ee4 t3 : 0000003fb89ad922 t4 :
000000000003642e
[89405.386574] t5 : 000000002b43e9ed t6 : 0000000000ad0fa7
[89405.393843] t5 : 000000002b43e9ed t6 : 0000000000ad0fa7
[89405.401108] status: 8000000200006020 badaddr: 000000000287e087 cause:
0000000000000002
[89405.408377] status: 8000000200006020 badaddr: 000000000287e087 cause:
0000000000000002
The illegal insn comes from POVMSStream_Init @ 0xb29e8 with below asm, take
simple vsetvel still have this issue but disable zvl will not have vl1re32 insn
and can fix this illegal insn.
00000000000b29e0 <_Z16POVMSStream_Initv>:
b29e0: 000dd7b7 lui a5,0xdd
b29e4: 38878793 add a5,a5,904 # dd388
<_ZTVN8pov_base7OStreamE+0x30>
b29e8: 0287e087 vl1re32.v v1,(a5)
b29ec: cd047057 vsetivli zero,8,e32,m1,ta,ma
b29f0: 0012f7b7 lui a5,0x12f
b29f4: 0d078793 add a5,a5,208 # 12f0d0
<POVMSStreamOrderTables>
b29f8: 5208a157 vid.v v2
One simple inline asm can also reproduce this issue too.
nt
main() {
asm volatile ("lui a5, 0xdd\n\t"
"add a5, a5, 904\n\t"
"vl1re32.v v1,(a5)\n\t"
:
:
:);
return 0;
}
I am trying to narrow down the POVMSStream_Init for easy debugging, and will
keep posted.