C:\!microtesk\MicroTESK-RISC-V\microtesk-riscv\microtesk-riscv\src\main\arch\riscv\templates>C:\!microtesk\MicroTESK-RISC-V\microtesk-riscv\microtesk-riscv\build\target\bin\generate.bat riscv isa_tests/rv64uf/fmadd.rb --code-file-prefix isa_tests/rv64uf/madd --code-file-extension s -v --ri RV64FULL C:\!microtesk\MicroTESK-RISC-V\microtesk-riscv\microtesk-riscv\src\main\arch\riscv\templates>java -ea -jar "C:\!microtesk\MicroTESK-RISC-V\microtesk-riscv\microtesk-riscv\build\target/lib/jars/microtesk.jar" -g riscv isa_tests/rv64uf/fmadd.rb --code-file-prefix isa_tests/rv64uf/madd --code-file-extension s -v --ri RV64FULL Home: C:\!microtesk\MicroTESK-RISC-V\microtesk-riscv\microtesk-riscv\build\target Current directory: C:\!microtesk\MicroTESK-RISC-V\microtesk-riscv\microtesk-riscv\src\main\arch\riscv\templates Model name: riscv Template file: isa_tests/rv64uf/fmadd.rb Loaded template RiscVBaseTemplate defined in C:/!microtesk/MicroTESK-RISC-V/microtesk-riscv/microtesk-riscv/src/main/arch/riscv/templates/riscv_base.rb Loaded template FmaddTemplate defined in C:/!microtesk/MicroTESK-RISC-V/microtesk-riscv/microtesk-riscv/src/main/arch/riscv/templates/isa_tests/rv64uf/fmadd.rb Processing template FmaddTemplate defined in C:/!microtesk/MicroTESK-RISC-V/microtesk-riscv/microtesk-riscv/src/main/arch/riscv/templates/isa_tests/rv64uf/fmadd.rb... Instance number: 1 ----------------------- Initializing Processing Elements ----------------------- The "instantiate" operation is undefined. Warning: Failed to load the MMU model. Physical memory will be accessed directly. ------------------------- Started Processing Template -------------------------- ------------------ Started Processing Initialization Section ------------------- ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022000 .align 4 .globl begin_signature begin_signature: ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022000 .align 4 .globl end_signature end_signature: ------------------- Ended Processing Initialization Section -------------------- ------------------- Started Processing Finalization Section -------------------- -------------------- Ended Processing Finalization Section --------------------- ----------------------- Started Processing Main Section ------------------------ ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022000 .align 2 test_2_data: 0x0000000080022000 (PA): .float 1.0 0x0000000080022004 (PA): .float 2.5 0x0000000080022008 (PA): .float 1.0 0x000000008002200c (PA): .float 3.5 ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022010 .align 2 test_3_data: 0x0000000080022010 (PA): .float -1.0 0x0000000080022014 (PA): .float -1235.1 0x0000000080022018 (PA): .float 1.1 0x000000008002201c (PA): .float 1236.2 ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022020 .align 2 test_4_data: 0x0000000080022020 (PA): .float 2.0 0x0000000080022024 (PA): .float -5.0 0x0000000080022028 (PA): .float -2.0 0x000000008002202c (PA): .float -12.0 ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022030 .align 2 test_5_data: 0x0000000080022030 (PA): .float 1.0 0x0000000080022034 (PA): .float 2.5 0x0000000080022038 (PA): .float 1.0 0x000000008002203c (PA): .float -3.5 ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022040 .align 2 test_6_data: 0x0000000080022040 (PA): .float -1.0 0x0000000080022044 (PA): .float -1235.1 0x0000000080022048 (PA): .float 1.1 0x000000008002204c (PA): .float -1236.2 ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022050 .align 2 test_7_data: 0x0000000080022050 (PA): .float 2.0 0x0000000080022054 (PA): .float -5.0 0x0000000080022058 (PA): .float -2.0 0x000000008002205c (PA): .float 12.0 ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022060 .align 2 test_8_data: 0x0000000080022060 (PA): .float 1.0 0x0000000080022064 (PA): .float 2.5 0x0000000080022068 (PA): .float 1.0 0x000000008002206c (PA): .float 1.5 ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022070 .align 2 test_9_data: 0x0000000080022070 (PA): .float -1.0 0x0000000080022074 (PA): .float -1235.1 0x0000000080022078 (PA): .float 1.1 0x000000008002207c (PA): .float 0f:000004D2 ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022080 .align 2 test_10_data: 0x0000000080022080 (PA): .float 2.0 0x0000000080022084 (PA): .float -5.0 0x0000000080022088 (PA): .float -2.0 0x000000008002208c (PA): .float -8.0 ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x0000000080022090 .align 2 test_11_data: 0x0000000080022090 (PA): .float 1.0 0x0000000080022094 (PA): .float 2.5 0x0000000080022098 (PA): .float 1.0 0x000000008002209c (PA): .float -1.5 ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x00000000800220a0 .align 2 test_12_data: 0x00000000800220a0 (PA): .float -1.0 0x00000000800220a4 (PA): .float -1235.1 0x00000000800220a8 (PA): .float 1.1 0x00000000800220ac (PA): .float 0f:FFFFFB2E ------------------------------- Allocating data -------------------------------- Section: .data [pa=0x0000000080022000, va=0x0000000080022000] Allocation starts: 0x00000000800220b0 .align 2 test_13_data: 0x00000000800220b0 (PA): .float 2.0 0x00000000800220b4 (PA): .float -5.0 0x00000000800220b8 (PA): .float -2.0 0x00000000800220bc (PA): .float 8.0 ------------------- Constructed Prologue (riscv_test.rb:231) ------------------- .section .text.init .align 6 .weak stvec_handler .weak mtvec_handler .globl _start _start: j reset_vector .align 2 trap_vector: csrr t5, mcause li t6, 0x8 beq t5, t6, write_tohost li t6, 0x9 beq t5, t6, write_tohost li t6, 0xb beq t5, t6, write_tohost la t5, mtvec_handler beqz t5, 1f jr t5 1: csrr t5, mcause bgez t5, handle_exception j other_exception handle_exception: other_exception: 1: ori gp, gp, 1337 write_tohost: nop nop j write_tohost reset_vector: csrr a0, mhartid 1: bnez a0, 1b la t0, 1f csrw mtvec, t0 csrwi satp, 0x0 .align 2 1: la t0, 1f csrw mtvec, t0 li t0, 0xffffffffffffffff csrw pmpaddr0, t0 li t0, 0x1f csrw pmpcfg0, t0 .align 2 1: la t0, 1f csrw mtvec, t0 csrwi medeleg, 0x0 csrwi mideleg, 0x0 csrwi mie, 0x0 .align 2 1: li gp, 0x0 la t0, trap_vector csrw mtvec, t0 li a0, 0x1 slli a0, a0, 0x1f bgez a0, 1f fence li gp, 0x1 ecall 1: la t0, stvec_handler beqz t0, 1f csrw stvec, t0 li t0, 0xb109 csrw medeleg, t0 csrr t1, medeleg bne t0, t1, other_exception 1: csrwi mstatus, 0x0 # RVTEST_FP_ENABLE li a0, 0x2000 csrs mstatus, a0 csrwi fcsr, 0x0 la t0, 1f csrw mepc, t0 csrr a0, mhartid mret 1: ------------------------------- Allocating code -------------------------------- Section: .section .text.init [pa=0x0000000080000000, va=0x0000000080000000] ------------- Constructed External Code (riscv_test_macros.rb:491) ------------- test_2: li gp, 0x2 la a0, test_2_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fmadd.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x0 bne a0, a3, fail bne a1, a2, fail test_3: li gp, 0x3 la a0, test_3_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fmadd.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x1 bne a0, a3, fail bne a1, a2, fail test_4: li gp, 0x4 la a0, test_4_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fmadd.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x0 bne a0, a3, fail bne a1, a2, fail test_5: li gp, 0x5 la a0, test_5_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fnmadd.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x0 bne a0, a3, fail bne a1, a2, fail test_6: li gp, 0x6 la a0, test_6_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fnmadd.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x1 bne a0, a3, fail bne a1, a2, fail test_7: li gp, 0x7 la a0, test_7_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fnmadd.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x0 bne a0, a3, fail bne a1, a2, fail test_8: li gp, 0x8 la a0, test_8_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fmsub.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x0 bne a0, a3, fail bne a1, a2, fail test_9: li gp, 0x9 la a0, test_9_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fmsub.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x1 bne a0, a3, fail bne a1, a2, fail test_10: li gp, 0xa la a0, test_10_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fmsub.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x0 bne a0, a3, fail bne a1, a2, fail test_11: li gp, 0xb la a0, test_11_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fnmsub.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x0 bne a0, a3, fail bne a1, a2, fail test_12: li gp, 0xc la a0, test_12_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fnmsub.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x1 bne a0, a3, fail bne a1, a2, fail test_13: li gp, 0xd la a0, test_13_data flw ft0, 0(a0) flw ft1, 4(a0) flw ft2, 8(a0) lw a3, 12(a0) fnmsub.s ft3, ft0, ft1, ft2 fmv.x.s a0, ft3 fsflags a1, zero li a2, 0x0 bne a0, a3, fail bne a1, a2, fail ------------------------------- Allocating code -------------------------------- Section: .section .text.init [pa=0x0000000080000000, va=0x0000000080000000] ------------------------ Ended Processing Main Section ------------------------- ------------- Running Execution from Prologue (riscv_test.rb:231) -------------- ---------------------------------- Instance 0 ---------------------------------- Execution status: 0x0000000080000000 .align 6 .weak stvec_handler .weak mtvec_handler _start: 0x0000000080000000 j reset_vector Jump to 0x000000008000004c reset_vector: 0x000000008000004c csrr a0, mhartid 1: 0x0000000080000050 bnez a0, 1b 0x0000000080000054 la t0, 1f 0x000000008000005c csrw mtvec, t0 0x0000000080000060 csrwi satp, 0x0 .align 2 1: 0x0000000080000064 la t0, 1f 0x000000008000006c csrw mtvec, t0 0x0000000080000070 li t0, 0xffffffffffffffff 0x0000000080000074 csrw pmpaddr0, t0 0x0000000080000078 li t0, 0x1f 0x000000008000007c csrw pmpcfg0, t0 .align 2 1: 0x0000000080000080 la t0, 1f 0x0000000080000088 csrw mtvec, t0 0x000000008000008c csrwi medeleg, 0x0 0x0000000080000090 csrwi mideleg, 0x0 0x0000000080000094 csrwi mie, 0x0 .align 2 1: 0x0000000080000098 li gp, 0x0 0x000000008000009c la t0, trap_vector 0x00000000800000a4 csrw mtvec, t0 0x00000000800000a8 li a0, 0x1 0x00000000800000ac slli a0, a0, 0x1f 0x00000000800000b0 bgez a0, 1f Jump to 0x00000000800000c0 1: 0x00000000800000c0 la t0, stvec_handler 0x00000000800000c8 beqz t0, 1f Jump to 0x00000000800000e4 1: 0x00000000800000e4 csrwi mstatus, 0x0 0x00000000800000e8 li a0, 0x2000 0x00000000800000f0 csrs mstatus, a0 0x00000000800000f4 csrwi fcsr, 0x0 0x00000000800000f8 la t0, 1f 0x0000000080000100 csrw mepc, t0 0x0000000080000104 csrr a0, mhartid 0x0000000080000108 mret 1: test_2: 0x000000008000010c li gp, 0x2 0x0000000080000110 la a0, test_2_data 0x0000000080000118 flw ft0, 0(a0) 0x000000008000011c flw ft1, 4(a0) 0x0000000080000120 flw ft2, 8(a0) 0x0000000080000124 lw a3, 12(a0) 0x0000000080000128 fmadd.s ft3, ft0, ft1, ft2 0x000000008000012c fmv.x.s a0, ft3 0x0000000080000130 fsflags a1, zero 0x0000000080000134 li a2, 0x0 Reference to undefined label fail: Check: a0(0x0000000040600000) == a3(0x0000000040600000) 0x0000000080000138 bne a0, a3, fail Call is not executed. Simulation is paused until the label is allocated. --------------- Constructed Epilogue (riscv_test_macros.rb:870) ---------------- bne zero, gp, pass fail: fence 1: beqz gp, 1b sll gp, gp, ra or gp, gp, ra ecall pass: fence li gp, 0x1 ecall unimp ------------------------------- Allocating code -------------------------------- Section: .section .text.init [pa=0x0000000080000000, va=0x0000000080000000] ---------- Running Execution from Epilogue (riscv_test_macros.rb:870) ---------- ---------------------------------- Instance 0 ---------------------------------- Execution status: 0x0000000080000138 (waiting for label fail) Check: a0(0x0000000040600000) == a3(0x0000000040600000) 0x0000000080000138 bne a0, a3, fail Check: a1(0x0000000000000000) == a2(0x0000000000000000) 0x000000008000013c bne a1, a2, fail test_3: 0x0000000080000140 li gp, 0x3 0x0000000080000144 la a0, test_3_data 0x000000008000014c flw ft0, 0(a0) 0x0000000080000150 flw ft1, 4(a0) 0x0000000080000154 flw ft2, 8(a0) 0x0000000080000158 lw a3, 12(a0) 0x000000008000015c fmadd.s ft3, ft0, ft1, ft2 0x0000000080000160 fmv.x.s a0, ft3 0x0000000080000164 fsflags a1, zero 0x0000000080000168 li a2, 0x1 Check: a0(0x00000000449a8666) == a3(0x00000000449a8666) 0x000000008000016c bne a0, a3, fail Check: a1(0x0000000000000001) == a2(0x0000000000000001) 0x0000000080000170 bne a1, a2, fail test_4: 0x0000000080000174 li gp, 0x4 0x0000000080000178 la a0, test_4_data 0x0000000080000180 flw ft0, 0(a0) 0x0000000080000184 flw ft1, 4(a0) 0x0000000080000188 flw ft2, 8(a0) 0x000000008000018c lw a3, 12(a0) 0x0000000080000190 fmadd.s ft3, ft0, ft1, ft2 0x0000000080000194 fmv.x.s a0, ft3 0x0000000080000198 fsflags a1, zero 0x000000008000019c li a2, 0x0 Check: a0(0xffffffffc1400000) == a3(0xffffffffc1400000) 0x00000000800001a0 bne a0, a3, fail Check: a1(0x0000000000000000) == a2(0x0000000000000000) 0x00000000800001a4 bne a1, a2, fail test_5: 0x00000000800001a8 li gp, 0x5 0x00000000800001ac la a0, test_5_data 0x00000000800001b4 flw ft0, 0(a0) 0x00000000800001b8 flw ft1, 4(a0) 0x00000000800001bc flw ft2, 8(a0) 0x00000000800001c0 lw a3, 12(a0) 0x00000000800001c4 fnmadd.s ft3, ft0, ft1, ft2 0x00000000800001c8 fmv.x.s a0, ft3 0x00000000800001cc fsflags a1, zero 0x00000000800001d0 li a2, 0x0 Check: a0(0xffffffffc0600000) == a3(0xffffffffc0600000) 0x00000000800001d4 bne a0, a3, fail Check: a1(0x0000000000000000) == a2(0x0000000000000000) 0x00000000800001d8 bne a1, a2, fail test_6: 0x00000000800001dc li gp, 0x6 0x00000000800001e0 la a0, test_6_data 0x00000000800001e8 flw ft0, 0(a0) 0x00000000800001ec flw ft1, 4(a0) 0x00000000800001f0 flw ft2, 8(a0) 0x00000000800001f4 lw a3, 12(a0) 0x00000000800001f8 fnmadd.s ft3, ft0, ft1, ft2 0x00000000800001fc fmv.x.s a0, ft3 0x0000000080000200 fsflags a1, zero 0x0000000080000204 li a2, 0x1 Check: a0(0xffffffffc49a8666) == a3(0xffffffffc49a8666) 0x0000000080000208 bne a0, a3, fail Check: a1(0x0000000000000001) == a2(0x0000000000000001) 0x000000008000020c bne a1, a2, fail test_7: 0x0000000080000210 li gp, 0x7 0x0000000080000214 la a0, test_7_data 0x000000008000021c flw ft0, 0(a0) 0x0000000080000220 flw ft1, 4(a0) 0x0000000080000224 flw ft2, 8(a0) 0x0000000080000228 lw a3, 12(a0) 0x000000008000022c fnmadd.s ft3, ft0, ft1, ft2 0x0000000080000230 fmv.x.s a0, ft3 0x0000000080000234 fsflags a1, zero 0x0000000080000238 li a2, 0x0 Check: a0(0x0000000041400000) == a3(0x0000000041400000) 0x000000008000023c bne a0, a3, fail Check: a1(0x0000000000000000) == a2(0x0000000000000000) 0x0000000080000240 bne a1, a2, fail test_8: 0x0000000080000244 li gp, 0x8 0x0000000080000248 la a0, test_8_data 0x0000000080000250 flw ft0, 0(a0) 0x0000000080000254 flw ft1, 4(a0) 0x0000000080000258 flw ft2, 8(a0) 0x000000008000025c lw a3, 12(a0) 0x0000000080000260 fmsub.s ft3, ft0, ft1, ft2 0x0000000080000264 fmv.x.s a0, ft3 0x0000000080000268 fsflags a1, zero 0x000000008000026c li a2, 0x0 Check: a0(0x000000003fc00000) == a3(0x000000003fc00000) 0x0000000080000270 bne a0, a3, fail Check: a1(0x0000000000000000) == a2(0x0000000000000000) 0x0000000080000274 bne a1, a2, fail test_9: 0x0000000080000278 li gp, 0x9 0x000000008000027c la a0, test_9_data 0x0000000080000284 flw ft0, 0(a0) 0x0000000080000288 flw ft1, 4(a0) 0x000000008000028c flw ft2, 8(a0) 0x0000000080000290 lw a3, 12(a0) 0x0000000080000294 fmsub.s ft3, ft0, ft1, ft2 0x0000000080000298 fmv.x.s a0, ft3 0x000000008000029c fsflags a1, zero 0x00000000800002a0 li a2, 0x1 Check: a0(0x00000000449a4000) == a3(0x00000000000004d2) 0x00000000800002a4 bne a0, a3, fail Jump to 0x0000000080000380 Error: Test failed (self check did not pass)! fail: 0x0000000080000380 fence 1: 0x0000000080000384 beqz gp, 1b 0x0000000080000388 sll gp, gp, ra 0x000000008000038c or gp, gp, ra 0x0000000080000390 ecall pass: 0x0000000080000394 fence 0x0000000080000398 li gp, 0x1 0x000000008000039c ecall 0x00000000800003a0 unimp Allocated entries: [] --------------------- Printing test program to madd_0000.s --------------------- -------------------------- Ended Processing Template --------------------------- -------------- Printing linker script to isa_tests/rv64uf/madd.ld -------------- Generation Statistics Generation time: 0.530 seconds Generation rate: 400 instructions/second Programs/stimuli/instructions: 1/0/212