Closed kumaransvyoma closed 2 weeks ago
beq
bne
# sample test " check: lui s0,0xfffff add s0,s0,-1 lui tp,0x20 beq s0,tp, ret beq s0,tp, ret+0 //compiles as bne * ret: add a1,a1,3 "
" 80000120: fffff437 lui s0,0xfffff 80000124: fff40413 add s0,s0,-1 # ffffefff <immx+0x452f152f> 80000128: 00020237 lui tp,0x20 8000012c: 00440663 beq s0,tp,80000138 80000130: 00441463 bne s0,tp,80000138 80000134: 0040006f j 80000138 "
## To reproduce the issue
clang -march=rv32i -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles -T ./env/link.ld -I ./env -mabi=ilp32 ./beq.S -o dut.elf -DTEST_CASE_1=True -DXLEN=32
riscv32-unknown-elf-objdump -d dut.elf > dut.disass
fixed with version 18 release
Branch instruction compiles inversely
beq
is complied with an offset using clang ,it compiles asbne
, and vice-versa.compiled as
" 80000120: fffff437 lui s0,0xfffff 80000124: fff40413 add s0,s0,-1 # ffffefff <immx+0x452f152f> 80000128: 00020237 lui tp,0x20 8000012c: 00440663 beq s0,tp,80000138
80000130: 00441463 bne s0,tp,80000138
80000134: 0040006f j 80000138
"
to compile
clang -march=rv32i -static -mcmodel=medany -fvisibility=hidden -nostdlib -nostartfiles -T ./env/link.ld -I ./env -mabi=ilp32 ./beq.S -o dut.elf -DTEST_CASE_1=True -DXLEN=32
to see disassembly file
riscv32-unknown-elf-objdump -d dut.elf > dut.disass