diff --git a/src/main/scala/vexriscv/TestsWorkspace.scala b/src/main/scala/vexriscv/TestsWorkspace.scala index 3fc35b8..c920e57 100644 --- a/src/main/scala/vexriscv/TestsWorkspace.scala +++ b/src/main/scala/vexriscv/TestsWorkspace.scala @@ -213,7 +213,7 @@ object TestsWorkspace { // } SpinalConfig().generateVerilog { - +// make clean run REDO=10 CSR=no MMU=no COREMARK=no RVF=yes REDO=1 TRACE=yes val config = GenFull.config config.plugins += new FpuPlugin( externalFpu = false, diff --git a/src/main/scala/vexriscv/ip/fpu/FpuCore.scala b/src/main/scala/vexriscv/ip/fpu/FpuCore.scala index 0f79aca..1884341 100644 --- a/src/main/scala/vexriscv/ip/fpu/FpuCore.scala +++ b/src/main/scala/vexriscv/ip/fpu/FpuCore.scala @@ -105,7 +105,6 @@ case class FpuCore( portCount : Int, p : FpuParameter) extends Component{ val value = p.writeFloating() val scrap = Bool() val roundMode = FpuRoundMode() - val allowException = Bool() } case class RoundOutput() extends Bundle{ @@ -560,6 +559,8 @@ case class FpuCore( portCount : Int, p : FpuParameter) extends Component{ val high = input.arg(0) ^ overflow result := (31 -> high, default -> low) flag.NV := input.valid && input.opcode === FpuOpcode.F2I && fsm.done && !isZero + } otherwise { + flag.NX := input.valid && input.opcode === FpuOpcode.F2I && fsm.done && round =/= 0 } } @@ -570,11 +571,12 @@ case class FpuCore( portCount : Int, p : FpuParameter) extends Component{ rs1AbsSmaller.setWhen(input.rs1.isZero) rs1AbsSmaller.clearWhen(input.rs2.isZero) rs1AbsSmaller.clearWhen(input.rs1.isInfinity) + rs1Equal setWhen(input.rs1.sign === input.rs2.sign && input.rs1.isInfinity && input.rs2.isInfinity) val rs1Smaller = (input.rs1.sign ## input.rs2.sign).mux( 0 -> rs1AbsSmaller, 1 -> False, 2 -> True, - 3 -> !rs1AbsSmaller + 3 -> (!rs1AbsSmaller && !rs1Equal) ) @@ -680,6 +682,8 @@ case class FpuCore( portCount : Int, p : FpuParameter) extends Component{ output.mantissa := man.asUInt output.setNormal + when(exp(exp.getWidth-3, 3 bits) >= 5) { output.exponent(p.internalExponentSize-2, 2 bits) := 3 } + val flag = io.port(input.source).completion.flag when(forceNan) { output.setNanQuiet @@ -1112,13 +1116,14 @@ case class FpuCore( portCount : Int, p : FpuParameter) extends Component{ port.address := input.source @@ input.rd port.data := input.value + val randomSim = p.sim generate (in UInt(p.internalMantissaSize bits)) if(p.sim) when(port.data.isZero || port.data.isInfinity){ - port.data.mantissa.assignDontCare() + port.data.mantissa := randomSim } if(p.sim) when(input.value.special){ - port.data.exponent(p.internalExponentSize-1 downto 3).assignDontCare() + port.data.exponent(p.internalExponentSize-1 downto 3) := randomSim.resized when(!input.value.isNan){ - port.data.exponent(2 downto 2).assignDontCare() + port.data.exponent(2 downto 2) := randomSim.resized } } diff --git a/src/main/scala/vexriscv/plugin/FpuPlugin.scala b/src/main/scala/vexriscv/plugin/FpuPlugin.scala index c367357..49bd49a 100644 --- a/src/main/scala/vexriscv/plugin/FpuPlugin.scala +++ b/src/main/scala/vexriscv/plugin/FpuPlugin.scala @@ -78,8 +78,8 @@ class FpuPlugin(externalFpu : Boolean = false, FSUB_S -> (addSub :+ arg(1)), FMADD_S -> (fma :+ arg(0)), FMSUB_S -> (fma :+ arg(2)), - FNMADD_S -> (fma :+ arg(1)), - FNMSUB_S -> (fma :+ arg(3)), + FNMADD_S -> (fma :+ arg(3)), + FNMSUB_S -> (fma :+ arg(1)), FMUL_S -> (mul :+ arg(0)), FDIV_S -> (div), FSQRT_S -> (sqrt), @@ -138,11 +138,11 @@ class FpuPlugin(externalFpu : Boolean = false, flags.NX init(False) setWhen(port.completion.flag.NX) val service = pipeline.service(classOf[CsrInterface]) - val rm = Reg(Bits(3 bits)) + val rm = Reg(Bits(3 bits)) init(0) service.rw(CSR.FCSR, 5, rm) service.rw(CSR.FCSR, 0, flags) - service.rw(CSR.FRM, 5, rm) + service.rw(CSR.FRM, 0, rm) service.rw(CSR.FFLAGS, 0, flags) val csrActive = service.duringAny() @@ -195,21 +195,22 @@ class FpuPlugin(externalFpu : Boolean = false, //Manage $store and port.rsp port.rsp.ready := False when(isRsp){ - port.rsp.ready := True when(arbitration.isValid) { dBusEncoding.bypassStore(port.rsp.value) output(REGFILE_WRITE_DATA) := port.rsp.value } when(!port.rsp.valid){ arbitration.haltByOther := True + } elsewhen(!arbitration.haltItself){ + port.rsp.ready := True } } // Manage $load val commit = Stream(FpuCommit(p)) - commit.valid := isCommit && arbitration.isMoving + commit.valid := isCommit && !arbitration.isStuck commit.value := (input(FPU_COMMIT_LOAD) ? output(DBUS_DATA) | input(RS1)) - commit.write := arbitration.isValid + commit.write := arbitration.isValid && !arbitration.removeIt commit.sync := input(FPU_COMMIT_SYNC) when(arbitration.isValid && !commit.ready){ @@ -219,6 +220,8 @@ class FpuPlugin(externalFpu : Boolean = false, port.commit <-/< commit } + pipeline.stages.dropRight(1).foreach(s => s.output(FPU_FORKED) clearWhen(s.arbitration.isStuck)) + Component.current.afterElaboration{ pipeline.stages.tail.foreach(_.input(FPU_FORKED).init(False)) } diff --git a/src/test/cpp/regression/main.cpp b/src/test/cpp/regression/main.cpp index 9391da3..9bfa886 100644 --- a/src/test/cpp/regression/main.cpp +++ b/src/test/cpp/regression/main.cpp @@ -1323,6 +1323,12 @@ public: allowInvalidate = false; return this; } + Workspace* writeWord(uint32_t address, uint32_t data){ + mem.write(address, 4, (uint8_t*)&data); + riscvRef.mem.write(address, 4, (uint8_t*)&data); + return this; + } + virtual bool isPerifRegion(uint32_t addr) { return false; } virtual bool isMmuRegion(uint32_t addr) { return true;} virtual void iBusAccess(uint32_t addr, uint32_t *data, bool *error) { @@ -3016,7 +3022,7 @@ public: if(code == 1 || code2 == 1){ pass(); }else{ - cout << "Error code " << code/2 << endl; + cout << "Error code " << code2/2 << endl; fail(); } } @@ -3624,6 +3630,21 @@ string riscvTestMemory[] = { }; +string riscvTestFloat[] = { + "rv32uf-p-fadd", + "rv32uf-p-fcmp", + "rv32uf-p-fcvt_w", + "rv32uf-p-fmadd", + "rv32uf-p-ldst", + "rv32uf-p-recoding", + "rv32uf-p-fclass", + "rv32uf-p-fcvt", + "rv32uf-p-fdiv", + "rv32uf-p-fmin", + "rv32uf-p-move" +}; + + string riscvTestMul[] = { @@ -3793,6 +3814,8 @@ string complianceTestC[] = { + + struct timespec timer_start(){ struct timespec start_time; clock_gettime(CLOCK_REALTIME, &start_time); //CLOCK_PROCESS_CPUTIME_ID @@ -3863,6 +3886,12 @@ int main(int argc, char **argv, char **env) { printf("BOOT\n"); timespec startedAt = timer_start(); + #ifdef RVF + for(const string &name : riscvTestFloat){ + redo(REDO,RiscvTest(name).bootAt(0x80000188u)->writeWord(0x80000184u, 0x00305073)->run();) + } + #endif + return 0; //#ifdef LITEX // LitexSoC("linux") @@ -4035,6 +4064,12 @@ int main(int argc, char **argv, char **env) { redo(REDO,RiscvTest(name).run();) } + #ifdef RVF + for(const string &name : riscvTestFloat){ + redo(REDO,RiscvTest(name).run();) + } + #endif + #ifdef MUL for(const string &name : riscvTestMul){ redo(REDO,RiscvTest(name).run();) diff --git a/src/test/cpp/regression/makefile b/src/test/cpp/regression/makefile index 7802a00..f63c812 100644 --- a/src/test/cpp/regression/makefile +++ b/src/test/cpp/regression/makefile @@ -265,6 +265,10 @@ ifeq ($(MUL),yes) ADDCFLAGS += -CFLAGS -DMUL endif +ifeq ($(RVF),yes) + ADDCFLAGS += -CFLAGS -DRVF +endif + ifeq ($(DIV),yes) ADDCFLAGS += -CFLAGS -DDIV endif diff --git a/src/test/resources/asm/rv32uf-p-fadd.dump b/src/test/resources/asm/rv32uf-p-fadd.dump new file mode 100644 index 0000000..af247c2 --- /dev/null +++ b/src/test/resources/asm/rv32uf-p-fadd.dump @@ -0,0 +1,402 @@ + +rv32uf-p-fadd: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: 00000093 li ra,0 +80000050: 00000113 li sp,0 +80000054: 00000193 li gp,0 +80000058: 00000213 li tp,0 +8000005c: 00000293 li t0,0 +80000060: 00000313 li t1,0 +80000064: 00000393 li t2,0 +80000068: 00000413 li s0,0 +8000006c: 00000493 li s1,0 +80000070: 00000513 li a0,0 +80000074: 00000593 li a1,0 +80000078: 00000613 li a2,0 +8000007c: 00000693 li a3,0 +80000080: 00000713 li a4,0 +80000084: 00000793 li a5,0 +80000088: 00000813 li a6,0 +8000008c: 00000893 li a7,0 +80000090: 00000913 li s2,0 +80000094: 00000993 li s3,0 +80000098: 00000a13 li s4,0 +8000009c: 00000a93 li s5,0 +800000a0: 00000b13 li s6,0 +800000a4: 00000b93 li s7,0 +800000a8: 00000c13 li s8,0 +800000ac: 00000c93 li s9,0 +800000b0: 00000d13 li s10,0 +800000b4: 00000d93 li s11,0 +800000b8: 00000e13 li t3,0 +800000bc: 00000e93 li t4,0 +800000c0: 00000f13 li t5,0 +800000c4: 00000f93 li t6,0 +800000c8: f1402573 csrr a0,mhartid +800000cc: 00051063 bnez a0,800000cc +800000d0: 00000297 auipc t0,0x0 +800000d4: 01028293 addi t0,t0,16 # 800000e0 +800000d8: 30529073 csrw mtvec,t0 +800000dc: 18005073 csrwi satp,0 +800000e0: 00000297 auipc t0,0x0 +800000e4: 02028293 addi t0,t0,32 # 80000100 +800000e8: 30529073 csrw mtvec,t0 +800000ec: 800002b7 lui t0,0x80000 +800000f0: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdf5f> +800000f4: 3b029073 csrw pmpaddr0,t0 +800000f8: 01f00293 li t0,31 +800000fc: 3a029073 csrw pmpcfg0,t0 +80000100: 30405073 csrwi mie,0 +80000104: 00000297 auipc t0,0x0 +80000108: 01428293 addi t0,t0,20 # 80000118 +8000010c: 30529073 csrw mtvec,t0 +80000110: 30205073 csrwi medeleg,0 +80000114: 30305073 csrwi mideleg,0 +80000118: 00000193 li gp,0 +8000011c: 00000297 auipc t0,0x0 +80000120: ee828293 addi t0,t0,-280 # 80000004 +80000124: 30529073 csrw mtvec,t0 +80000128: 00100513 li a0,1 +8000012c: 01f51513 slli a0,a0,0x1f +80000130: 00054c63 bltz a0,80000148 +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 05d00893 li a7,93 +80000140: 00000513 li a0,0 +80000144: 00000073 ecall +80000148: 80000297 auipc t0,0x80000 +8000014c: eb828293 addi t0,t0,-328 # 0 <_start-0x80000000> +80000150: 00028a63 beqz t0,80000164 +80000154: 10529073 csrw stvec,t0 +80000158: 0000b2b7 lui t0,0xb +8000015c: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +80000160: 30229073 csrw medeleg,t0 +80000164: 30005073 csrwi mstatus,0 +80000168: 00002537 lui a0,0x2 +8000016c: 30052073 csrs mstatus,a0 +80000170: 00305073 csrwi fcsr,0 +80000174: 00000297 auipc t0,0x0 +80000178: 01428293 addi t0,t0,20 # 80000188 +8000017c: 34129073 csrw mepc,t0 +80000180: f1402573 csrr a0,mhartid +80000184: 30200073 mret + +80000188 : +80000188: 00200193 li gp,2 +8000018c: 00002517 auipc a0,0x2 +80000190: e7450513 addi a0,a0,-396 # 80002000 +80000194: 00052007 flw ft0,0(a0) +80000198: 00452087 flw ft1,4(a0) +8000019c: 00852107 flw ft2,8(a0) +800001a0: 00c52683 lw a3,12(a0) +800001a4: 001071d3 fadd.s ft3,ft0,ft1 +800001a8: e0018553 fmv.x.w a0,ft3 +800001ac: 001015f3 fsflags a1,zero +800001b0: 00000613 li a2,0 +800001b4: 1ed51063 bne a0,a3,80000394 +800001b8: 1cc59e63 bne a1,a2,80000394 + +800001bc : +800001bc: 00300193 li gp,3 +800001c0: 00002517 auipc a0,0x2 +800001c4: e5050513 addi a0,a0,-432 # 80002010 +800001c8: 00052007 flw ft0,0(a0) +800001cc: 00452087 flw ft1,4(a0) +800001d0: 00852107 flw ft2,8(a0) +800001d4: 00c52683 lw a3,12(a0) +800001d8: 001071d3 fadd.s ft3,ft0,ft1 +800001dc: e0018553 fmv.x.w a0,ft3 +800001e0: 001015f3 fsflags a1,zero +800001e4: 00100613 li a2,1 +800001e8: 1ad51663 bne a0,a3,80000394 +800001ec: 1ac59463 bne a1,a2,80000394 + +800001f0 : +800001f0: 00400193 li gp,4 +800001f4: 00002517 auipc a0,0x2 +800001f8: e2c50513 addi a0,a0,-468 # 80002020 +800001fc: 00052007 flw ft0,0(a0) +80000200: 00452087 flw ft1,4(a0) +80000204: 00852107 flw ft2,8(a0) +80000208: 00c52683 lw a3,12(a0) +8000020c: 001071d3 fadd.s ft3,ft0,ft1 +80000210: e0018553 fmv.x.w a0,ft3 +80000214: 001015f3 fsflags a1,zero +80000218: 00100613 li a2,1 +8000021c: 16d51c63 bne a0,a3,80000394 +80000220: 16c59a63 bne a1,a2,80000394 + +80000224 : +80000224: 00500193 li gp,5 +80000228: 00002517 auipc a0,0x2 +8000022c: e0850513 addi a0,a0,-504 # 80002030 +80000230: 00052007 flw ft0,0(a0) +80000234: 00452087 flw ft1,4(a0) +80000238: 00852107 flw ft2,8(a0) +8000023c: 00c52683 lw a3,12(a0) +80000240: 081071d3 fsub.s ft3,ft0,ft1 +80000244: e0018553 fmv.x.w a0,ft3 +80000248: 001015f3 fsflags a1,zero +8000024c: 00000613 li a2,0 +80000250: 14d51263 bne a0,a3,80000394 +80000254: 14c59063 bne a1,a2,80000394 + +80000258 : +80000258: 00600193 li gp,6 +8000025c: 00002517 auipc a0,0x2 +80000260: de450513 addi a0,a0,-540 # 80002040 +80000264: 00052007 flw ft0,0(a0) +80000268: 00452087 flw ft1,4(a0) +8000026c: 00852107 flw ft2,8(a0) +80000270: 00c52683 lw a3,12(a0) +80000274: 081071d3 fsub.s ft3,ft0,ft1 +80000278: e0018553 fmv.x.w a0,ft3 +8000027c: 001015f3 fsflags a1,zero +80000280: 00100613 li a2,1 +80000284: 10d51863 bne a0,a3,80000394 +80000288: 10c59663 bne a1,a2,80000394 + +8000028c : +8000028c: 00700193 li gp,7 +80000290: 00002517 auipc a0,0x2 +80000294: dc050513 addi a0,a0,-576 # 80002050 +80000298: 00052007 flw ft0,0(a0) +8000029c: 00452087 flw ft1,4(a0) +800002a0: 00852107 flw ft2,8(a0) +800002a4: 00c52683 lw a3,12(a0) +800002a8: 081071d3 fsub.s ft3,ft0,ft1 +800002ac: e0018553 fmv.x.w a0,ft3 +800002b0: 001015f3 fsflags a1,zero +800002b4: 00100613 li a2,1 +800002b8: 0cd51e63 bne a0,a3,80000394 +800002bc: 0cc59c63 bne a1,a2,80000394 + +800002c0 : +800002c0: 00800193 li gp,8 +800002c4: 00002517 auipc a0,0x2 +800002c8: d9c50513 addi a0,a0,-612 # 80002060 +800002cc: 00052007 flw ft0,0(a0) +800002d0: 00452087 flw ft1,4(a0) +800002d4: 00852107 flw ft2,8(a0) +800002d8: 00c52683 lw a3,12(a0) +800002dc: 101071d3 fmul.s ft3,ft0,ft1 +800002e0: e0018553 fmv.x.w a0,ft3 +800002e4: 001015f3 fsflags a1,zero +800002e8: 00000613 li a2,0 +800002ec: 0ad51463 bne a0,a3,80000394 +800002f0: 0ac59263 bne a1,a2,80000394 + +800002f4 : +800002f4: 00900193 li gp,9 +800002f8: 00002517 auipc a0,0x2 +800002fc: d7850513 addi a0,a0,-648 # 80002070 +80000300: 00052007 flw ft0,0(a0) +80000304: 00452087 flw ft1,4(a0) +80000308: 00852107 flw ft2,8(a0) +8000030c: 00c52683 lw a3,12(a0) +80000310: 101071d3 fmul.s ft3,ft0,ft1 +80000314: e0018553 fmv.x.w a0,ft3 +80000318: 001015f3 fsflags a1,zero +8000031c: 00100613 li a2,1 +80000320: 06d51a63 bne a0,a3,80000394 +80000324: 06c59863 bne a1,a2,80000394 + +80000328 : +80000328: 00a00193 li gp,10 +8000032c: 00002517 auipc a0,0x2 +80000330: d5450513 addi a0,a0,-684 # 80002080 +80000334: 00052007 flw ft0,0(a0) +80000338: 00452087 flw ft1,4(a0) +8000033c: 00852107 flw ft2,8(a0) +80000340: 00c52683 lw a3,12(a0) +80000344: 101071d3 fmul.s ft3,ft0,ft1 +80000348: e0018553 fmv.x.w a0,ft3 +8000034c: 001015f3 fsflags a1,zero +80000350: 00100613 li a2,1 +80000354: 04d51063 bne a0,a3,80000394 +80000358: 02c59e63 bne a1,a2,80000394 + +8000035c : +8000035c: 00b00193 li gp,11 +80000360: 00002517 auipc a0,0x2 +80000364: d3050513 addi a0,a0,-720 # 80002090 +80000368: 00052007 flw ft0,0(a0) +8000036c: 00452087 flw ft1,4(a0) +80000370: 00852107 flw ft2,8(a0) +80000374: 00c52683 lw a3,12(a0) +80000378: 081071d3 fsub.s ft3,ft0,ft1 +8000037c: e0018553 fmv.x.w a0,ft3 +80000380: 001015f3 fsflags a1,zero +80000384: 01000613 li a2,16 +80000388: 00d51663 bne a0,a3,80000394 +8000038c: 00c59463 bne a1,a2,80000394 +80000390: 02301063 bne zero,gp,800003b0 + +80000394 : +80000394: 0ff0000f fence +80000398: 00018063 beqz gp,80000398 +8000039c: 00119193 slli gp,gp,0x1 +800003a0: 0011e193 ori gp,gp,1 +800003a4: 05d00893 li a7,93 +800003a8: 00018513 mv a0,gp +800003ac: 00000073 ecall + +800003b0 : +800003b0: 0ff0000f fence +800003b4: 00100193 li gp,1 +800003b8: 05d00893 li a7,93 +800003bc: 00000513 li a0,0 +800003c0: 00000073 ecall +800003c4: c0001073 unimp +800003c8: 0000 unimp +800003ca: 0000 unimp +800003cc: 0000 unimp +800003ce: 0000 unimp +800003d0: 0000 unimp +800003d2: 0000 unimp +800003d4: 0000 unimp +800003d6: 0000 unimp +800003d8: 0000 unimp +800003da: 0000 unimp +800003dc: 0000 unimp +800003de: 0000 unimp +800003e0: 0000 unimp +800003e2: 0000 unimp +800003e4: 0000 unimp +800003e6: 0000 unimp +800003e8: 0000 unimp +800003ea: 0000 unimp +800003ec: 0000 unimp +800003ee: 0000 unimp +800003f0: 0000 unimp +800003f2: 0000 unimp +800003f4: 0000 unimp +800003f6: 0000 unimp +800003f8: 0000 unimp +800003fa: 0000 unimp +800003fc: 0000 unimp +800003fe: 0000 unimp +80000400: 0000 unimp +80000402: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 4020 lw s0,64(s0) +80002004: 0000 unimp +80002006: 3f80 fld fs0,56(a5) +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 4060 lw s0,68(s0) + +80002010 : +80002010: c49a6333 0xc49a6333 +80002014: cccd beqz s1,800020ce <_end+0x2e> +80002016: 3f8c fld fa1,56(a5) +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: 4000 lw s0,0(s0) +8000201e: c49a sw t1,72(sp) + +80002020 : +80002020: 40490fdb 0x40490fdb +80002024: 322bcc77 0x322bcc77 +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 40490fdb 0x40490fdb + +80002030 : +80002030: 0000 unimp +80002032: 4020 lw s0,64(s0) +80002034: 0000 unimp +80002036: 3f80 fld fs0,56(a5) +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: 0000 unimp +8000203e: 3fc0 fld fs0,184(a5) + +80002040 : +80002040: c49a6333 0xc49a6333 +80002044: cccd beqz s1,800020fe <_end+0x5e> +80002046: bf8c fsd fa1,56(a5) +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 4000 lw s0,0(s0) +8000204e: c49a sw t1,72(sp) + +80002050 : +80002050: 40490fdb 0x40490fdb +80002054: 322bcc77 0x322bcc77 +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 40490fdb 0x40490fdb + +80002060 : +80002060: 0000 unimp +80002062: 4020 lw s0,64(s0) +80002064: 0000 unimp +80002066: 3f80 fld fs0,56(a5) +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 4020 lw s0,64(s0) + +80002070 : +80002070: c49a6333 0xc49a6333 +80002074: cccd beqz s1,8000212e <_end+0x8e> +80002076: bf8c fsd fa1,56(a5) +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: d385 beqz a5,80001f9c +8000207e: 44a9 li s1,10 + +80002080 : +80002080: 40490fdb 0x40490fdb +80002084: 322bcc77 0x322bcc77 +80002088: 0000 unimp +8000208a: 0000 unimp +8000208c: ee2d bnez a2,80002106 <_end+0x66> +8000208e: 3306 fld ft6,96(sp) + +80002090 : +80002090: 0000 unimp +80002092: 7f80 flw fs0,56(a5) +80002094: 0000 unimp +80002096: 7f80 flw fs0,56(a5) +80002098: 0000 unimp +8000209a: 0000 unimp +8000209c: 0000 unimp +8000209e: 7fc0 flw fs0,60(a5) diff --git a/src/test/resources/asm/rv32uf-p-fclass.dump b/src/test/resources/asm/rv32uf-p-fclass.dump new file mode 100644 index 0000000..38e8286 --- /dev/null +++ b/src/test/resources/asm/rv32uf-p-fclass.dump @@ -0,0 +1,218 @@ + +rv32uf-p-fclass: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: 00000093 li ra,0 +80000050: 00000113 li sp,0 +80000054: 00000193 li gp,0 +80000058: 00000213 li tp,0 +8000005c: 00000293 li t0,0 +80000060: 00000313 li t1,0 +80000064: 00000393 li t2,0 +80000068: 00000413 li s0,0 +8000006c: 00000493 li s1,0 +80000070: 00000513 li a0,0 +80000074: 00000593 li a1,0 +80000078: 00000613 li a2,0 +8000007c: 00000693 li a3,0 +80000080: 00000713 li a4,0 +80000084: 00000793 li a5,0 +80000088: 00000813 li a6,0 +8000008c: 00000893 li a7,0 +80000090: 00000913 li s2,0 +80000094: 00000993 li s3,0 +80000098: 00000a13 li s4,0 +8000009c: 00000a93 li s5,0 +800000a0: 00000b13 li s6,0 +800000a4: 00000b93 li s7,0 +800000a8: 00000c13 li s8,0 +800000ac: 00000c93 li s9,0 +800000b0: 00000d13 li s10,0 +800000b4: 00000d93 li s11,0 +800000b8: 00000e13 li t3,0 +800000bc: 00000e93 li t4,0 +800000c0: 00000f13 li t5,0 +800000c4: 00000f93 li t6,0 +800000c8: f1402573 csrr a0,mhartid +800000cc: 00051063 bnez a0,800000cc +800000d0: 00000297 auipc t0,0x0 +800000d4: 01028293 addi t0,t0,16 # 800000e0 +800000d8: 30529073 csrw mtvec,t0 +800000dc: 18005073 csrwi satp,0 +800000e0: 00000297 auipc t0,0x0 +800000e4: 02028293 addi t0,t0,32 # 80000100 +800000e8: 30529073 csrw mtvec,t0 +800000ec: 800002b7 lui t0,0x80000 +800000f0: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> +800000f4: 3b029073 csrw pmpaddr0,t0 +800000f8: 01f00293 li t0,31 +800000fc: 3a029073 csrw pmpcfg0,t0 +80000100: 30405073 csrwi mie,0 +80000104: 00000297 auipc t0,0x0 +80000108: 01428293 addi t0,t0,20 # 80000118 +8000010c: 30529073 csrw mtvec,t0 +80000110: 30205073 csrwi medeleg,0 +80000114: 30305073 csrwi mideleg,0 +80000118: 00000193 li gp,0 +8000011c: 00000297 auipc t0,0x0 +80000120: ee828293 addi t0,t0,-280 # 80000004 +80000124: 30529073 csrw mtvec,t0 +80000128: 00100513 li a0,1 +8000012c: 01f51513 slli a0,a0,0x1f +80000130: 00054c63 bltz a0,80000148 +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 05d00893 li a7,93 +80000140: 00000513 li a0,0 +80000144: 00000073 ecall +80000148: 80000297 auipc t0,0x80000 +8000014c: eb828293 addi t0,t0,-328 # 0 <_start-0x80000000> +80000150: 00028a63 beqz t0,80000164 +80000154: 10529073 csrw stvec,t0 +80000158: 0000b2b7 lui t0,0xb +8000015c: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +80000160: 30229073 csrw medeleg,t0 +80000164: 30005073 csrwi mstatus,0 +80000168: 00002537 lui a0,0x2 +8000016c: 30052073 csrs mstatus,a0 +80000170: 00305073 csrwi fcsr,0 +80000174: 00000297 auipc t0,0x0 +80000178: 01428293 addi t0,t0,20 # 80000188 +8000017c: 34129073 csrw mepc,t0 +80000180: f1402573 csrr a0,mhartid +80000184: 30200073 mret + +80000188 : +80000188: ff800537 lui a0,0xff800 +8000018c: f0050553 fmv.w.x fa0,a0 +80000190: e0051553 fclass.s a0,fa0 +80000194: 00100393 li t2,1 +80000198: 00200193 li gp,2 +8000019c: 0e751663 bne a0,t2,80000288 + +800001a0 : +800001a0: bf800537 lui a0,0xbf800 +800001a4: f0050553 fmv.w.x fa0,a0 +800001a8: e0051553 fclass.s a0,fa0 +800001ac: 00200393 li t2,2 +800001b0: 00300193 li gp,3 +800001b4: 0c751a63 bne a0,t2,80000288 + +800001b8 : +800001b8: 80800537 lui a0,0x80800 +800001bc: fff50513 addi a0,a0,-1 # 807fffff <_end+0x7fdfff> +800001c0: f0050553 fmv.w.x fa0,a0 +800001c4: e0051553 fclass.s a0,fa0 +800001c8: 00400393 li t2,4 +800001cc: 00400193 li gp,4 +800001d0: 0a751c63 bne a0,t2,80000288 + +800001d4 : +800001d4: 80000537 lui a0,0x80000 +800001d8: f0050553 fmv.w.x fa0,a0 +800001dc: e0051553 fclass.s a0,fa0 +800001e0: 00800393 li t2,8 +800001e4: 00500193 li gp,5 +800001e8: 0a751063 bne a0,t2,80000288 + +800001ec : +800001ec: 00000513 li a0,0 +800001f0: f0050553 fmv.w.x fa0,a0 +800001f4: e0051553 fclass.s a0,fa0 +800001f8: 01000393 li t2,16 +800001fc: 00600193 li gp,6 +80000200: 08751463 bne a0,t2,80000288 + +80000204 : +80000204: 00800537 lui a0,0x800 +80000208: fff50513 addi a0,a0,-1 # 7fffff <_start-0x7f800001> +8000020c: f0050553 fmv.w.x fa0,a0 +80000210: e0051553 fclass.s a0,fa0 +80000214: 02000393 li t2,32 +80000218: 00700193 li gp,7 +8000021c: 06751663 bne a0,t2,80000288 + +80000220 : +80000220: 3f800537 lui a0,0x3f800 +80000224: f0050553 fmv.w.x fa0,a0 +80000228: e0051553 fclass.s a0,fa0 +8000022c: 04000393 li t2,64 +80000230: 00800193 li gp,8 +80000234: 04751a63 bne a0,t2,80000288 + +80000238 : +80000238: 7f800537 lui a0,0x7f800 +8000023c: f0050553 fmv.w.x fa0,a0 +80000240: e0051553 fclass.s a0,fa0 +80000244: 08000393 li t2,128 +80000248: 00900193 li gp,9 +8000024c: 02751e63 bne a0,t2,80000288 + +80000250 : +80000250: 7f800537 lui a0,0x7f800 +80000254: 00150513 addi a0,a0,1 # 7f800001 <_start-0x7fffff> +80000258: f0050553 fmv.w.x fa0,a0 +8000025c: e0051553 fclass.s a0,fa0 +80000260: 10000393 li t2,256 +80000264: 00a00193 li gp,10 +80000268: 02751063 bne a0,t2,80000288 + +8000026c : +8000026c: 7fc00537 lui a0,0x7fc00 +80000270: f0050553 fmv.w.x fa0,a0 +80000274: e0051553 fclass.s a0,fa0 +80000278: 20000393 li t2,512 +8000027c: 00b00193 li gp,11 +80000280: 00751463 bne a0,t2,80000288 +80000284: 02301063 bne zero,gp,800002a4 + +80000288 : +80000288: 0ff0000f fence +8000028c: 00018063 beqz gp,8000028c +80000290: 00119193 slli gp,gp,0x1 +80000294: 0011e193 ori gp,gp,1 +80000298: 05d00893 li a7,93 +8000029c: 00018513 mv a0,gp +800002a0: 00000073 ecall + +800002a4 : +800002a4: 0ff0000f fence +800002a8: 00100193 li gp,1 +800002ac: 05d00893 li a7,93 +800002b0: 00000513 li a0,0 +800002b4: 00000073 ecall +800002b8: c0001073 unimp +800002bc: 0000 unimp +800002be: 0000 unimp +800002c0: 0000 unimp +800002c2: 0000 unimp diff --git a/src/test/resources/asm/rv32uf-p-fcmp.dump b/src/test/resources/asm/rv32uf-p-fcmp.dump new file mode 100644 index 0000000..50d7524 --- /dev/null +++ b/src/test/resources/asm/rv32uf-p-fcmp.dump @@ -0,0 +1,510 @@ + +rv32uf-p-fcmp: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: 00000093 li ra,0 +80000050: 00000113 li sp,0 +80000054: 00000193 li gp,0 +80000058: 00000213 li tp,0 +8000005c: 00000293 li t0,0 +80000060: 00000313 li t1,0 +80000064: 00000393 li t2,0 +80000068: 00000413 li s0,0 +8000006c: 00000493 li s1,0 +80000070: 00000513 li a0,0 +80000074: 00000593 li a1,0 +80000078: 00000613 li a2,0 +8000007c: 00000693 li a3,0 +80000080: 00000713 li a4,0 +80000084: 00000793 li a5,0 +80000088: 00000813 li a6,0 +8000008c: 00000893 li a7,0 +80000090: 00000913 li s2,0 +80000094: 00000993 li s3,0 +80000098: 00000a13 li s4,0 +8000009c: 00000a93 li s5,0 +800000a0: 00000b13 li s6,0 +800000a4: 00000b93 li s7,0 +800000a8: 00000c13 li s8,0 +800000ac: 00000c93 li s9,0 +800000b0: 00000d13 li s10,0 +800000b4: 00000d93 li s11,0 +800000b8: 00000e13 li t3,0 +800000bc: 00000e93 li t4,0 +800000c0: 00000f13 li t5,0 +800000c4: 00000f93 li t6,0 +800000c8: f1402573 csrr a0,mhartid +800000cc: 00051063 bnez a0,800000cc +800000d0: 00000297 auipc t0,0x0 +800000d4: 01028293 addi t0,t0,16 # 800000e0 +800000d8: 30529073 csrw mtvec,t0 +800000dc: 18005073 csrwi satp,0 +800000e0: 00000297 auipc t0,0x0 +800000e4: 02028293 addi t0,t0,32 # 80000100 +800000e8: 30529073 csrw mtvec,t0 +800000ec: 800002b7 lui t0,0x80000 +800000f0: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdf0f> +800000f4: 3b029073 csrw pmpaddr0,t0 +800000f8: 01f00293 li t0,31 +800000fc: 3a029073 csrw pmpcfg0,t0 +80000100: 30405073 csrwi mie,0 +80000104: 00000297 auipc t0,0x0 +80000108: 01428293 addi t0,t0,20 # 80000118 +8000010c: 30529073 csrw mtvec,t0 +80000110: 30205073 csrwi medeleg,0 +80000114: 30305073 csrwi mideleg,0 +80000118: 00000193 li gp,0 +8000011c: 00000297 auipc t0,0x0 +80000120: ee828293 addi t0,t0,-280 # 80000004 +80000124: 30529073 csrw mtvec,t0 +80000128: 00100513 li a0,1 +8000012c: 01f51513 slli a0,a0,0x1f +80000130: 00054c63 bltz a0,80000148 +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 05d00893 li a7,93 +80000140: 00000513 li a0,0 +80000144: 00000073 ecall +80000148: 80000297 auipc t0,0x80000 +8000014c: eb828293 addi t0,t0,-328 # 0 <_start-0x80000000> +80000150: 00028a63 beqz t0,80000164 +80000154: 10529073 csrw stvec,t0 +80000158: 0000b2b7 lui t0,0xb +8000015c: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +80000160: 30229073 csrw medeleg,t0 +80000164: 30005073 csrwi mstatus,0 +80000168: 00002537 lui a0,0x2 +8000016c: 30052073 csrs mstatus,a0 +80000170: 00305073 csrwi fcsr,0 +80000174: 00000297 auipc t0,0x0 +80000178: 01428293 addi t0,t0,20 # 80000188 +8000017c: 34129073 csrw mepc,t0 +80000180: f1402573 csrr a0,mhartid +80000184: 30200073 mret + +80000188 : +80000188: 00200193 li gp,2 +8000018c: 00002517 auipc a0,0x2 +80000190: e7450513 addi a0,a0,-396 # 80002000 +80000194: 00052007 flw ft0,0(a0) +80000198: 00452087 flw ft1,4(a0) +8000019c: 00852107 flw ft2,8(a0) +800001a0: 00c52683 lw a3,12(a0) +800001a4: a0102553 feq.s a0,ft0,ft1 +800001a8: 001015f3 fsflags a1,zero +800001ac: 00000613 li a2,0 +800001b0: 2ad51663 bne a0,a3,8000045c +800001b4: 2ac59463 bne a1,a2,8000045c + +800001b8 : +800001b8: 00300193 li gp,3 +800001bc: 00002517 auipc a0,0x2 +800001c0: e5450513 addi a0,a0,-428 # 80002010 +800001c4: 00052007 flw ft0,0(a0) +800001c8: 00452087 flw ft1,4(a0) +800001cc: 00852107 flw ft2,8(a0) +800001d0: 00c52683 lw a3,12(a0) +800001d4: a0100553 fle.s a0,ft0,ft1 +800001d8: 001015f3 fsflags a1,zero +800001dc: 00000613 li a2,0 +800001e0: 26d51e63 bne a0,a3,8000045c +800001e4: 26c59c63 bne a1,a2,8000045c + +800001e8 : +800001e8: 00400193 li gp,4 +800001ec: 00002517 auipc a0,0x2 +800001f0: e3450513 addi a0,a0,-460 # 80002020 +800001f4: 00052007 flw ft0,0(a0) +800001f8: 00452087 flw ft1,4(a0) +800001fc: 00852107 flw ft2,8(a0) +80000200: 00c52683 lw a3,12(a0) +80000204: a0101553 flt.s a0,ft0,ft1 +80000208: 001015f3 fsflags a1,zero +8000020c: 00000613 li a2,0 +80000210: 24d51663 bne a0,a3,8000045c +80000214: 24c59463 bne a1,a2,8000045c + +80000218 : +80000218: 00500193 li gp,5 +8000021c: 00002517 auipc a0,0x2 +80000220: e1450513 addi a0,a0,-492 # 80002030 +80000224: 00052007 flw ft0,0(a0) +80000228: 00452087 flw ft1,4(a0) +8000022c: 00852107 flw ft2,8(a0) +80000230: 00c52683 lw a3,12(a0) +80000234: a0102553 feq.s a0,ft0,ft1 +80000238: 001015f3 fsflags a1,zero +8000023c: 00000613 li a2,0 +80000240: 20d51e63 bne a0,a3,8000045c +80000244: 20c59c63 bne a1,a2,8000045c + +80000248 : +80000248: 00600193 li gp,6 +8000024c: 00002517 auipc a0,0x2 +80000250: df450513 addi a0,a0,-524 # 80002040 +80000254: 00052007 flw ft0,0(a0) +80000258: 00452087 flw ft1,4(a0) +8000025c: 00852107 flw ft2,8(a0) +80000260: 00c52683 lw a3,12(a0) +80000264: a0100553 fle.s a0,ft0,ft1 +80000268: 001015f3 fsflags a1,zero +8000026c: 00000613 li a2,0 +80000270: 1ed51663 bne a0,a3,8000045c +80000274: 1ec59463 bne a1,a2,8000045c + +80000278 : +80000278: 00700193 li gp,7 +8000027c: 00002517 auipc a0,0x2 +80000280: dd450513 addi a0,a0,-556 # 80002050 +80000284: 00052007 flw ft0,0(a0) +80000288: 00452087 flw ft1,4(a0) +8000028c: 00852107 flw ft2,8(a0) +80000290: 00c52683 lw a3,12(a0) +80000294: a0101553 flt.s a0,ft0,ft1 +80000298: 001015f3 fsflags a1,zero +8000029c: 00000613 li a2,0 +800002a0: 1ad51e63 bne a0,a3,8000045c +800002a4: 1ac59c63 bne a1,a2,8000045c + +800002a8 : +800002a8: 00800193 li gp,8 +800002ac: 00002517 auipc a0,0x2 +800002b0: db450513 addi a0,a0,-588 # 80002060 +800002b4: 00052007 flw ft0,0(a0) +800002b8: 00452087 flw ft1,4(a0) +800002bc: 00852107 flw ft2,8(a0) +800002c0: 00c52683 lw a3,12(a0) +800002c4: a0102553 feq.s a0,ft0,ft1 +800002c8: 001015f3 fsflags a1,zero +800002cc: 00000613 li a2,0 +800002d0: 18d51663 bne a0,a3,8000045c +800002d4: 18c59463 bne a1,a2,8000045c + +800002d8 : +800002d8: 00900193 li gp,9 +800002dc: 00002517 auipc a0,0x2 +800002e0: d9450513 addi a0,a0,-620 # 80002070 +800002e4: 00052007 flw ft0,0(a0) +800002e8: 00452087 flw ft1,4(a0) +800002ec: 00852107 flw ft2,8(a0) +800002f0: 00c52683 lw a3,12(a0) +800002f4: a0102553 feq.s a0,ft0,ft1 +800002f8: 001015f3 fsflags a1,zero +800002fc: 00000613 li a2,0 +80000300: 14d51e63 bne a0,a3,8000045c +80000304: 14c59c63 bne a1,a2,8000045c + +80000308 : +80000308: 00a00193 li gp,10 +8000030c: 00002517 auipc a0,0x2 +80000310: d7450513 addi a0,a0,-652 # 80002080 +80000314: 00052007 flw ft0,0(a0) +80000318: 00452087 flw ft1,4(a0) +8000031c: 00852107 flw ft2,8(a0) +80000320: 00c52683 lw a3,12(a0) +80000324: a0102553 feq.s a0,ft0,ft1 +80000328: 001015f3 fsflags a1,zero +8000032c: 01000613 li a2,16 +80000330: 12d51663 bne a0,a3,8000045c +80000334: 12c59463 bne a1,a2,8000045c + +80000338 : +80000338: 00b00193 li gp,11 +8000033c: 00002517 auipc a0,0x2 +80000340: d5450513 addi a0,a0,-684 # 80002090 +80000344: 00052007 flw ft0,0(a0) +80000348: 00452087 flw ft1,4(a0) +8000034c: 00852107 flw ft2,8(a0) +80000350: 00c52683 lw a3,12(a0) +80000354: a0101553 flt.s a0,ft0,ft1 +80000358: 001015f3 fsflags a1,zero +8000035c: 01000613 li a2,16 +80000360: 0ed51e63 bne a0,a3,8000045c +80000364: 0ec59c63 bne a1,a2,8000045c + +80000368 : +80000368: 00c00193 li gp,12 +8000036c: 00002517 auipc a0,0x2 +80000370: d3450513 addi a0,a0,-716 # 800020a0 +80000374: 00052007 flw ft0,0(a0) +80000378: 00452087 flw ft1,4(a0) +8000037c: 00852107 flw ft2,8(a0) +80000380: 00c52683 lw a3,12(a0) +80000384: a0101553 flt.s a0,ft0,ft1 +80000388: 001015f3 fsflags a1,zero +8000038c: 01000613 li a2,16 +80000390: 0cd51663 bne a0,a3,8000045c +80000394: 0cc59463 bne a1,a2,8000045c + +80000398 : +80000398: 00d00193 li gp,13 +8000039c: 00002517 auipc a0,0x2 +800003a0: d1450513 addi a0,a0,-748 # 800020b0 +800003a4: 00052007 flw ft0,0(a0) +800003a8: 00452087 flw ft1,4(a0) +800003ac: 00852107 flw ft2,8(a0) +800003b0: 00c52683 lw a3,12(a0) +800003b4: a0101553 flt.s a0,ft0,ft1 +800003b8: 001015f3 fsflags a1,zero +800003bc: 01000613 li a2,16 +800003c0: 08d51e63 bne a0,a3,8000045c +800003c4: 08c59c63 bne a1,a2,8000045c + +800003c8 : +800003c8: 00e00193 li gp,14 +800003cc: 00002517 auipc a0,0x2 +800003d0: cf450513 addi a0,a0,-780 # 800020c0 +800003d4: 00052007 flw ft0,0(a0) +800003d8: 00452087 flw ft1,4(a0) +800003dc: 00852107 flw ft2,8(a0) +800003e0: 00c52683 lw a3,12(a0) +800003e4: a0100553 fle.s a0,ft0,ft1 +800003e8: 001015f3 fsflags a1,zero +800003ec: 01000613 li a2,16 +800003f0: 06d51663 bne a0,a3,8000045c +800003f4: 06c59463 bne a1,a2,8000045c + +800003f8 : +800003f8: 00f00193 li gp,15 +800003fc: 00002517 auipc a0,0x2 +80000400: cd450513 addi a0,a0,-812 # 800020d0 +80000404: 00052007 flw ft0,0(a0) +80000408: 00452087 flw ft1,4(a0) +8000040c: 00852107 flw ft2,8(a0) +80000410: 00c52683 lw a3,12(a0) +80000414: a0100553 fle.s a0,ft0,ft1 +80000418: 001015f3 fsflags a1,zero +8000041c: 01000613 li a2,16 +80000420: 02d51e63 bne a0,a3,8000045c +80000424: 02c59c63 bne a1,a2,8000045c + +80000428 : +80000428: 01000193 li gp,16 +8000042c: 00002517 auipc a0,0x2 +80000430: cb450513 addi a0,a0,-844 # 800020e0 +80000434: 00052007 flw ft0,0(a0) +80000438: 00452087 flw ft1,4(a0) +8000043c: 00852107 flw ft2,8(a0) +80000440: 00c52683 lw a3,12(a0) +80000444: a0100553 fle.s a0,ft0,ft1 +80000448: 001015f3 fsflags a1,zero +8000044c: 01000613 li a2,16 +80000450: 00d51663 bne a0,a3,8000045c +80000454: 00c59463 bne a1,a2,8000045c +80000458: 02301063 bne zero,gp,80000478 + +8000045c : +8000045c: 0ff0000f fence +80000460: 00018063 beqz gp,80000460 +80000464: 00119193 slli gp,gp,0x1 +80000468: 0011e193 ori gp,gp,1 +8000046c: 05d00893 li a7,93 +80000470: 00018513 mv a0,gp +80000474: 00000073 ecall + +80000478 : +80000478: 0ff0000f fence +8000047c: 00100193 li gp,1 +80000480: 05d00893 li a7,93 +80000484: 00000513 li a0,0 +80000488: 00000073 ecall +8000048c: c0001073 unimp +80000490: 0000 unimp +80000492: 0000 unimp +80000494: 0000 unimp +80000496: 0000 unimp +80000498: 0000 unimp +8000049a: 0000 unimp +8000049c: 0000 unimp +8000049e: 0000 unimp +800004a0: 0000 unimp +800004a2: 0000 unimp +800004a4: 0000 unimp +800004a6: 0000 unimp +800004a8: 0000 unimp +800004aa: 0000 unimp +800004ac: 0000 unimp +800004ae: 0000 unimp +800004b0: 0000 unimp +800004b2: 0000 unimp +800004b4: 0000 unimp +800004b6: 0000 unimp +800004b8: 0000 unimp +800004ba: 0000 unimp +800004bc: 0000 unimp +800004be: 0000 unimp +800004c0: 0000 unimp +800004c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: bfae147b 0xbfae147b +80002004: bfae147b 0xbfae147b +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0001 nop +8000200e: 0000 unimp + +80002010 : +80002010: bfae147b 0xbfae147b +80002014: bfae147b 0xbfae147b +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: 0001 nop +8000201e: 0000 unimp + +80002020 : +80002020: bfae147b 0xbfae147b +80002024: bfae147b 0xbfae147b +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 0000 unimp +8000202e: 0000 unimp + +80002030 : +80002030: 5c29 li s8,-22 +80002032: 147bbfaf 0x147bbfaf +80002036: bfae fsd fa1,504(sp) +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: 0000 unimp +8000203e: 0000 unimp + +80002040 : +80002040: 5c29 li s8,-22 +80002042: 147bbfaf 0x147bbfaf +80002046: bfae fsd fa1,504(sp) +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 0001 nop +8000204e: 0000 unimp + +80002050 : +80002050: 5c29 li s8,-22 +80002052: 147bbfaf 0x147bbfaf +80002056: bfae fsd fa1,504(sp) +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0001 nop +8000205e: 0000 unimp + +80002060 : +80002060: ffff 0xffff +80002062: 7fff 0x7fff +80002064: 0000 unimp +80002066: 0000 unimp +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 0000 unimp + +80002070 : +80002070: ffff 0xffff +80002072: 7fff 0x7fff +80002074: ffff 0xffff +80002076: 7fff 0x7fff +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: 0000 unimp +8000207e: 0000 unimp + +80002080 : +80002080: 0001 nop +80002082: 7f80 flw fs0,56(a5) +80002084: 0000 unimp +80002086: 0000 unimp +80002088: 0000 unimp +8000208a: 0000 unimp +8000208c: 0000 unimp +8000208e: 0000 unimp + +80002090 : +80002090: ffff 0xffff +80002092: 7fff 0x7fff +80002094: 0000 unimp +80002096: 0000 unimp +80002098: 0000 unimp +8000209a: 0000 unimp +8000209c: 0000 unimp +8000209e: 0000 unimp + +800020a0 : +800020a0: ffff 0xffff +800020a2: 7fff 0x7fff +800020a4: ffff 0xffff +800020a6: 7fff 0x7fff +800020a8: 0000 unimp +800020aa: 0000 unimp +800020ac: 0000 unimp +800020ae: 0000 unimp + +800020b0 : +800020b0: 0001 nop +800020b2: 7f80 flw fs0,56(a5) +800020b4: 0000 unimp +800020b6: 0000 unimp +800020b8: 0000 unimp +800020ba: 0000 unimp +800020bc: 0000 unimp +800020be: 0000 unimp + +800020c0 : +800020c0: ffff 0xffff +800020c2: 7fff 0x7fff +800020c4: 0000 unimp +800020c6: 0000 unimp +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0000 unimp +800020ce: 0000 unimp + +800020d0 : +800020d0: ffff 0xffff +800020d2: 7fff 0x7fff +800020d4: ffff 0xffff +800020d6: 7fff 0x7fff +800020d8: 0000 unimp +800020da: 0000 unimp +800020dc: 0000 unimp +800020de: 0000 unimp + +800020e0 : +800020e0: 0001 nop +800020e2: 7f80 flw fs0,56(a5) +800020e4: 0000 unimp +800020e6: 0000 unimp +800020e8: 0000 unimp +800020ea: 0000 unimp +800020ec: 0000 unimp +800020ee: 0000 unimp diff --git a/src/test/resources/asm/rv32uf-p-fcvt.dump b/src/test/resources/asm/rv32uf-p-fcvt.dump new file mode 100644 index 0000000..2b648da --- /dev/null +++ b/src/test/resources/asm/rv32uf-p-fcvt.dump @@ -0,0 +1,219 @@ + +rv32uf-p-fcvt: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: 00000093 li ra,0 +80000050: 00000113 li sp,0 +80000054: 00000193 li gp,0 +80000058: 00000213 li tp,0 +8000005c: 00000293 li t0,0 +80000060: 00000313 li t1,0 +80000064: 00000393 li t2,0 +80000068: 00000413 li s0,0 +8000006c: 00000493 li s1,0 +80000070: 00000513 li a0,0 +80000074: 00000593 li a1,0 +80000078: 00000613 li a2,0 +8000007c: 00000693 li a3,0 +80000080: 00000713 li a4,0 +80000084: 00000793 li a5,0 +80000088: 00000813 li a6,0 +8000008c: 00000893 li a7,0 +80000090: 00000913 li s2,0 +80000094: 00000993 li s3,0 +80000098: 00000a13 li s4,0 +8000009c: 00000a93 li s5,0 +800000a0: 00000b13 li s6,0 +800000a4: 00000b93 li s7,0 +800000a8: 00000c13 li s8,0 +800000ac: 00000c93 li s9,0 +800000b0: 00000d13 li s10,0 +800000b4: 00000d93 li s11,0 +800000b8: 00000e13 li t3,0 +800000bc: 00000e93 li t4,0 +800000c0: 00000f13 li t5,0 +800000c4: 00000f93 li t6,0 +800000c8: f1402573 csrr a0,mhartid +800000cc: 00051063 bnez a0,800000cc +800000d0: 00000297 auipc t0,0x0 +800000d4: 01028293 addi t0,t0,16 # 800000e0 +800000d8: 30529073 csrw mtvec,t0 +800000dc: 18005073 csrwi satp,0 +800000e0: 00000297 auipc t0,0x0 +800000e4: 02028293 addi t0,t0,32 # 80000100 +800000e8: 30529073 csrw mtvec,t0 +800000ec: 800002b7 lui t0,0x80000 +800000f0: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfef> +800000f4: 3b029073 csrw pmpaddr0,t0 +800000f8: 01f00293 li t0,31 +800000fc: 3a029073 csrw pmpcfg0,t0 +80000100: 30405073 csrwi mie,0 +80000104: 00000297 auipc t0,0x0 +80000108: 01428293 addi t0,t0,20 # 80000118 +8000010c: 30529073 csrw mtvec,t0 +80000110: 30205073 csrwi medeleg,0 +80000114: 30305073 csrwi mideleg,0 +80000118: 00000193 li gp,0 +8000011c: 00000297 auipc t0,0x0 +80000120: ee828293 addi t0,t0,-280 # 80000004 +80000124: 30529073 csrw mtvec,t0 +80000128: 00100513 li a0,1 +8000012c: 01f51513 slli a0,a0,0x1f +80000130: 00054c63 bltz a0,80000148 +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 05d00893 li a7,93 +80000140: 00000513 li a0,0 +80000144: 00000073 ecall +80000148: 80000297 auipc t0,0x80000 +8000014c: eb828293 addi t0,t0,-328 # 0 <_start-0x80000000> +80000150: 00028a63 beqz t0,80000164 +80000154: 10529073 csrw stvec,t0 +80000158: 0000b2b7 lui t0,0xb +8000015c: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +80000160: 30229073 csrw medeleg,t0 +80000164: 30005073 csrwi mstatus,0 +80000168: 00002537 lui a0,0x2 +8000016c: 30052073 csrs mstatus,a0 +80000170: 00305073 csrwi fcsr,0 +80000174: 00000297 auipc t0,0x0 +80000178: 01428293 addi t0,t0,20 # 80000188 +8000017c: 34129073 csrw mepc,t0 +80000180: f1402573 csrr a0,mhartid +80000184: 30200073 mret + +80000188 : +80000188: 00200193 li gp,2 +8000018c: 00002517 auipc a0,0x2 +80000190: e7450513 addi a0,a0,-396 # 80002000 +80000194: 00052683 lw a3,0(a0) +80000198: 00200513 li a0,2 +8000019c: d0057053 fcvt.s.w ft0,a0 +800001a0: 00101073 fsflags zero +800001a4: e0000553 fmv.x.w a0,ft0 +800001a8: 06d51a63 bne a0,a3,8000021c + +800001ac : +800001ac: 00300193 li gp,3 +800001b0: 00002517 auipc a0,0x2 +800001b4: e5450513 addi a0,a0,-428 # 80002004 +800001b8: 00052683 lw a3,0(a0) +800001bc: ffe00513 li a0,-2 +800001c0: d0057053 fcvt.s.w ft0,a0 +800001c4: 00101073 fsflags zero +800001c8: e0000553 fmv.x.w a0,ft0 +800001cc: 04d51863 bne a0,a3,8000021c + +800001d0 : +800001d0: 00400193 li gp,4 +800001d4: 00002517 auipc a0,0x2 +800001d8: e3450513 addi a0,a0,-460 # 80002008 +800001dc: 00052683 lw a3,0(a0) +800001e0: 00200513 li a0,2 +800001e4: d0157053 fcvt.s.wu ft0,a0 +800001e8: 00101073 fsflags zero +800001ec: e0000553 fmv.x.w a0,ft0 +800001f0: 02d51663 bne a0,a3,8000021c + +800001f4 : +800001f4: 00500193 li gp,5 +800001f8: 00002517 auipc a0,0x2 +800001fc: e1450513 addi a0,a0,-492 # 8000200c +80000200: 00052683 lw a3,0(a0) +80000204: ffe00513 li a0,-2 +80000208: d0157053 fcvt.s.wu ft0,a0 +8000020c: 00101073 fsflags zero +80000210: e0000553 fmv.x.w a0,ft0 +80000214: 00d51463 bne a0,a3,8000021c +80000218: 02301063 bne zero,gp,80000238 + +8000021c : +8000021c: 0ff0000f fence +80000220: 00018063 beqz gp,80000220 +80000224: 00119193 slli gp,gp,0x1 +80000228: 0011e193 ori gp,gp,1 +8000022c: 05d00893 li a7,93 +80000230: 00018513 mv a0,gp +80000234: 00000073 ecall + +80000238 : +80000238: 0ff0000f fence +8000023c: 00100193 li gp,1 +80000240: 05d00893 li a7,93 +80000244: 00000513 li a0,0 +80000248: 00000073 ecall +8000024c: c0001073 unimp +80000250: 0000 unimp +80000252: 0000 unimp +80000254: 0000 unimp +80000256: 0000 unimp +80000258: 0000 unimp +8000025a: 0000 unimp +8000025c: 0000 unimp +8000025e: 0000 unimp +80000260: 0000 unimp +80000262: 0000 unimp +80000264: 0000 unimp +80000266: 0000 unimp +80000268: 0000 unimp +8000026a: 0000 unimp +8000026c: 0000 unimp +8000026e: 0000 unimp +80000270: 0000 unimp +80000272: 0000 unimp +80000274: 0000 unimp +80000276: 0000 unimp +80000278: 0000 unimp +8000027a: 0000 unimp +8000027c: 0000 unimp +8000027e: 0000 unimp +80000280: 0000 unimp +80000282: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 4000 lw s0,0(s0) + +80002004 : +80002004: 0000 unimp +80002006: c000 sw s0,0(s0) + +80002008 : +80002008: 0000 unimp +8000200a: 4000 lw s0,0(s0) + +8000200c : +8000200c: 0000 unimp +8000200e: 4f80 lw s0,24(a5) diff --git a/src/test/resources/asm/rv32uf-p-fcvt_w.dump b/src/test/resources/asm/rv32uf-p-fcvt_w.dump new file mode 100644 index 0000000..48a51a3 --- /dev/null +++ b/src/test/resources/asm/rv32uf-p-fcvt_w.dump @@ -0,0 +1,632 @@ + +rv32uf-p-fcvt_w: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: 00000093 li ra,0 +80000050: 00000113 li sp,0 +80000054: 00000193 li gp,0 +80000058: 00000213 li tp,0 +8000005c: 00000293 li t0,0 +80000060: 00000313 li t1,0 +80000064: 00000393 li t2,0 +80000068: 00000413 li s0,0 +8000006c: 00000493 li s1,0 +80000070: 00000513 li a0,0 +80000074: 00000593 li a1,0 +80000078: 00000613 li a2,0 +8000007c: 00000693 li a3,0 +80000080: 00000713 li a4,0 +80000084: 00000793 li a5,0 +80000088: 00000813 li a6,0 +8000008c: 00000893 li a7,0 +80000090: 00000913 li s2,0 +80000094: 00000993 li s3,0 +80000098: 00000a13 li s4,0 +8000009c: 00000a93 li s5,0 +800000a0: 00000b13 li s6,0 +800000a4: 00000b93 li s7,0 +800000a8: 00000c13 li s8,0 +800000ac: 00000c93 li s9,0 +800000b0: 00000d13 li s10,0 +800000b4: 00000d93 li s11,0 +800000b8: 00000e13 li t3,0 +800000bc: 00000e93 li t4,0 +800000c0: 00000f13 li t5,0 +800000c4: 00000f93 li t6,0 +800000c8: f1402573 csrr a0,mhartid +800000cc: 00051063 bnez a0,800000cc +800000d0: 00000297 auipc t0,0x0 +800000d4: 01028293 addi t0,t0,16 # 800000e0 +800000d8: 30529073 csrw mtvec,t0 +800000dc: 18005073 csrwi satp,0 +800000e0: 00000297 auipc t0,0x0 +800000e4: 02028293 addi t0,t0,32 # 80000100 +800000e8: 30529073 csrw mtvec,t0 +800000ec: 800002b7 lui t0,0x80000 +800000f0: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdecf> +800000f4: 3b029073 csrw pmpaddr0,t0 +800000f8: 01f00293 li t0,31 +800000fc: 3a029073 csrw pmpcfg0,t0 +80000100: 30405073 csrwi mie,0 +80000104: 00000297 auipc t0,0x0 +80000108: 01428293 addi t0,t0,20 # 80000118 +8000010c: 30529073 csrw mtvec,t0 +80000110: 30205073 csrwi medeleg,0 +80000114: 30305073 csrwi mideleg,0 +80000118: 00000193 li gp,0 +8000011c: 00000297 auipc t0,0x0 +80000120: ee828293 addi t0,t0,-280 # 80000004 +80000124: 30529073 csrw mtvec,t0 +80000128: 00100513 li a0,1 +8000012c: 01f51513 slli a0,a0,0x1f +80000130: 00054c63 bltz a0,80000148 +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 05d00893 li a7,93 +80000140: 00000513 li a0,0 +80000144: 00000073 ecall +80000148: 80000297 auipc t0,0x80000 +8000014c: eb828293 addi t0,t0,-328 # 0 <_start-0x80000000> +80000150: 00028a63 beqz t0,80000164 +80000154: 10529073 csrw stvec,t0 +80000158: 0000b2b7 lui t0,0xb +8000015c: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +80000160: 30229073 csrw medeleg,t0 +80000164: 30005073 csrwi mstatus,0 +80000168: 00002537 lui a0,0x2 +8000016c: 30052073 csrs mstatus,a0 +80000170: 00305073 csrwi fcsr,0 +80000174: 00000297 auipc t0,0x0 +80000178: 01428293 addi t0,t0,20 # 80000188 +8000017c: 34129073 csrw mepc,t0 +80000180: f1402573 csrr a0,mhartid +80000184: 30200073 mret + +80000188 : +80000188: 00200193 li gp,2 +8000018c: 00002517 auipc a0,0x2 +80000190: e7450513 addi a0,a0,-396 # 80002000 +80000194: 00052007 flw ft0,0(a0) +80000198: 00452087 flw ft1,4(a0) +8000019c: 00852107 flw ft2,8(a0) +800001a0: 00c52683 lw a3,12(a0) +800001a4: c0001553 fcvt.w.s a0,ft0,rtz +800001a8: 001015f3 fsflags a1,zero +800001ac: 00100613 li a2,1 +800001b0: 3cd51463 bne a0,a3,80000578 +800001b4: 3cc59263 bne a1,a2,80000578 + +800001b8 : +800001b8: 00300193 li gp,3 +800001bc: 00002517 auipc a0,0x2 +800001c0: e5450513 addi a0,a0,-428 # 80002010 +800001c4: 00052007 flw ft0,0(a0) +800001c8: 00452087 flw ft1,4(a0) +800001cc: 00852107 flw ft2,8(a0) +800001d0: 00c52683 lw a3,12(a0) +800001d4: c0001553 fcvt.w.s a0,ft0,rtz +800001d8: 001015f3 fsflags a1,zero +800001dc: 00000613 li a2,0 +800001e0: 38d51c63 bne a0,a3,80000578 +800001e4: 38c59a63 bne a1,a2,80000578 + +800001e8 : +800001e8: 00400193 li gp,4 +800001ec: 00002517 auipc a0,0x2 +800001f0: e3450513 addi a0,a0,-460 # 80002020 +800001f4: 00052007 flw ft0,0(a0) +800001f8: 00452087 flw ft1,4(a0) +800001fc: 00852107 flw ft2,8(a0) +80000200: 00c52683 lw a3,12(a0) +80000204: c0001553 fcvt.w.s a0,ft0,rtz +80000208: 001015f3 fsflags a1,zero +8000020c: 00100613 li a2,1 +80000210: 36d51463 bne a0,a3,80000578 +80000214: 36c59263 bne a1,a2,80000578 + +80000218 : +80000218: 00500193 li gp,5 +8000021c: 00002517 auipc a0,0x2 +80000220: e1450513 addi a0,a0,-492 # 80002030 +80000224: 00052007 flw ft0,0(a0) +80000228: 00452087 flw ft1,4(a0) +8000022c: 00852107 flw ft2,8(a0) +80000230: 00c52683 lw a3,12(a0) +80000234: c0001553 fcvt.w.s a0,ft0,rtz +80000238: 001015f3 fsflags a1,zero +8000023c: 00100613 li a2,1 +80000240: 32d51c63 bne a0,a3,80000578 +80000244: 32c59a63 bne a1,a2,80000578 + +80000248 : +80000248: 00600193 li gp,6 +8000024c: 00002517 auipc a0,0x2 +80000250: df450513 addi a0,a0,-524 # 80002040 +80000254: 00052007 flw ft0,0(a0) +80000258: 00452087 flw ft1,4(a0) +8000025c: 00852107 flw ft2,8(a0) +80000260: 00c52683 lw a3,12(a0) +80000264: c0001553 fcvt.w.s a0,ft0,rtz +80000268: 001015f3 fsflags a1,zero +8000026c: 00000613 li a2,0 +80000270: 30d51463 bne a0,a3,80000578 +80000274: 30c59263 bne a1,a2,80000578 + +80000278 : +80000278: 00700193 li gp,7 +8000027c: 00002517 auipc a0,0x2 +80000280: dd450513 addi a0,a0,-556 # 80002050 +80000284: 00052007 flw ft0,0(a0) +80000288: 00452087 flw ft1,4(a0) +8000028c: 00852107 flw ft2,8(a0) +80000290: 00c52683 lw a3,12(a0) +80000294: c0001553 fcvt.w.s a0,ft0,rtz +80000298: 001015f3 fsflags a1,zero +8000029c: 00100613 li a2,1 +800002a0: 2cd51c63 bne a0,a3,80000578 +800002a4: 2cc59a63 bne a1,a2,80000578 + +800002a8 : +800002a8: 00800193 li gp,8 +800002ac: 00002517 auipc a0,0x2 +800002b0: db450513 addi a0,a0,-588 # 80002060 +800002b4: 00052007 flw ft0,0(a0) +800002b8: 00452087 flw ft1,4(a0) +800002bc: 00852107 flw ft2,8(a0) +800002c0: 00c52683 lw a3,12(a0) +800002c4: c0001553 fcvt.w.s a0,ft0,rtz +800002c8: 001015f3 fsflags a1,zero +800002cc: 01000613 li a2,16 +800002d0: 2ad51463 bne a0,a3,80000578 +800002d4: 2ac59263 bne a1,a2,80000578 + +800002d8 : +800002d8: 00900193 li gp,9 +800002dc: 00002517 auipc a0,0x2 +800002e0: d9450513 addi a0,a0,-620 # 80002070 +800002e4: 00052007 flw ft0,0(a0) +800002e8: 00452087 flw ft1,4(a0) +800002ec: 00852107 flw ft2,8(a0) +800002f0: 00c52683 lw a3,12(a0) +800002f4: c0001553 fcvt.w.s a0,ft0,rtz +800002f8: 001015f3 fsflags a1,zero +800002fc: 01000613 li a2,16 +80000300: 26d51c63 bne a0,a3,80000578 +80000304: 26c59a63 bne a1,a2,80000578 + +80000308 : +80000308: 00c00193 li gp,12 +8000030c: 00002517 auipc a0,0x2 +80000310: d7450513 addi a0,a0,-652 # 80002080 +80000314: 00052007 flw ft0,0(a0) +80000318: 00452087 flw ft1,4(a0) +8000031c: 00852107 flw ft2,8(a0) +80000320: 00c52683 lw a3,12(a0) +80000324: c0101553 fcvt.wu.s a0,ft0,rtz +80000328: 001015f3 fsflags a1,zero +8000032c: 01000613 li a2,16 +80000330: 24d51463 bne a0,a3,80000578 +80000334: 24c59263 bne a1,a2,80000578 + +80000338 : +80000338: 00d00193 li gp,13 +8000033c: 00002517 auipc a0,0x2 +80000340: d5450513 addi a0,a0,-684 # 80002090 +80000344: 00052007 flw ft0,0(a0) +80000348: 00452087 flw ft1,4(a0) +8000034c: 00852107 flw ft2,8(a0) +80000350: 00c52683 lw a3,12(a0) +80000354: c0101553 fcvt.wu.s a0,ft0,rtz +80000358: 001015f3 fsflags a1,zero +8000035c: 01000613 li a2,16 +80000360: 20d51c63 bne a0,a3,80000578 +80000364: 20c59a63 bne a1,a2,80000578 + +80000368 : +80000368: 00e00193 li gp,14 +8000036c: 00002517 auipc a0,0x2 +80000370: d3450513 addi a0,a0,-716 # 800020a0 +80000374: 00052007 flw ft0,0(a0) +80000378: 00452087 flw ft1,4(a0) +8000037c: 00852107 flw ft2,8(a0) +80000380: 00c52683 lw a3,12(a0) +80000384: c0101553 fcvt.wu.s a0,ft0,rtz +80000388: 001015f3 fsflags a1,zero +8000038c: 00100613 li a2,1 +80000390: 1ed51463 bne a0,a3,80000578 +80000394: 1ec59263 bne a1,a2,80000578 + +80000398 : +80000398: 00f00193 li gp,15 +8000039c: 00002517 auipc a0,0x2 +800003a0: d1450513 addi a0,a0,-748 # 800020b0 +800003a4: 00052007 flw ft0,0(a0) +800003a8: 00452087 flw ft1,4(a0) +800003ac: 00852107 flw ft2,8(a0) +800003b0: 00c52683 lw a3,12(a0) +800003b4: c0101553 fcvt.wu.s a0,ft0,rtz +800003b8: 001015f3 fsflags a1,zero +800003bc: 00100613 li a2,1 +800003c0: 1ad51c63 bne a0,a3,80000578 +800003c4: 1ac59a63 bne a1,a2,80000578 + +800003c8 : +800003c8: 01000193 li gp,16 +800003cc: 00002517 auipc a0,0x2 +800003d0: cf450513 addi a0,a0,-780 # 800020c0 +800003d4: 00052007 flw ft0,0(a0) +800003d8: 00452087 flw ft1,4(a0) +800003dc: 00852107 flw ft2,8(a0) +800003e0: 00c52683 lw a3,12(a0) +800003e4: c0101553 fcvt.wu.s a0,ft0,rtz +800003e8: 001015f3 fsflags a1,zero +800003ec: 00000613 li a2,0 +800003f0: 18d51463 bne a0,a3,80000578 +800003f4: 18c59263 bne a1,a2,80000578 + +800003f8 : +800003f8: 01100193 li gp,17 +800003fc: 00002517 auipc a0,0x2 +80000400: cd450513 addi a0,a0,-812 # 800020d0 +80000404: 00052007 flw ft0,0(a0) +80000408: 00452087 flw ft1,4(a0) +8000040c: 00852107 flw ft2,8(a0) +80000410: 00c52683 lw a3,12(a0) +80000414: c0101553 fcvt.wu.s a0,ft0,rtz +80000418: 001015f3 fsflags a1,zero +8000041c: 00100613 li a2,1 +80000420: 14d51c63 bne a0,a3,80000578 +80000424: 14c59a63 bne a1,a2,80000578 + +80000428 : +80000428: 01200193 li gp,18 +8000042c: 00002517 auipc a0,0x2 +80000430: cb450513 addi a0,a0,-844 # 800020e0 +80000434: 00052007 flw ft0,0(a0) +80000438: 00452087 flw ft1,4(a0) +8000043c: 00852107 flw ft2,8(a0) +80000440: 00c52683 lw a3,12(a0) +80000444: c0101553 fcvt.wu.s a0,ft0,rtz +80000448: 001015f3 fsflags a1,zero +8000044c: 01000613 li a2,16 +80000450: 12d51463 bne a0,a3,80000578 +80000454: 12c59263 bne a1,a2,80000578 + +80000458 : +80000458: 01300193 li gp,19 +8000045c: 00002517 auipc a0,0x2 +80000460: c9450513 addi a0,a0,-876 # 800020f0 +80000464: 00052007 flw ft0,0(a0) +80000468: 00452087 flw ft1,4(a0) +8000046c: 00852107 flw ft2,8(a0) +80000470: 00c52683 lw a3,12(a0) +80000474: c0101553 fcvt.wu.s a0,ft0,rtz +80000478: 001015f3 fsflags a1,zero +8000047c: 00000613 li a2,0 +80000480: 0ed51c63 bne a0,a3,80000578 +80000484: 0ec59a63 bne a1,a2,80000578 + +80000488 : +80000488: 00002097 auipc ra,0x2 +8000048c: c7808093 addi ra,ra,-904 # 80002100 +80000490: 0000a087 flw ft1,0(ra) +80000494: c000f0d3 fcvt.w.s ra,ft1 +80000498: 800003b7 lui t2,0x80000 +8000049c: fff38393 addi t2,t2,-1 # 7fffffff <_end+0xffffdecf> +800004a0: 02a00193 li gp,42 +800004a4: 0c709a63 bne ra,t2,80000578 + +800004a8 : +800004a8: 00002097 auipc ra,0x2 +800004ac: c5808093 addi ra,ra,-936 # 80002100 +800004b0: 0080a087 flw ft1,8(ra) +800004b4: c000f0d3 fcvt.w.s ra,ft1 +800004b8: 800003b7 lui t2,0x80000 +800004bc: 02c00193 li gp,44 +800004c0: 0a709c63 bne ra,t2,80000578 + +800004c4 : +800004c4: 00002097 auipc ra,0x2 +800004c8: c3c08093 addi ra,ra,-964 # 80002100 +800004cc: 0040a087 flw ft1,4(ra) +800004d0: c000f0d3 fcvt.w.s ra,ft1 +800004d4: 800003b7 lui t2,0x80000 +800004d8: fff38393 addi t2,t2,-1 # 7fffffff <_end+0xffffdecf> +800004dc: 03400193 li gp,52 +800004e0: 08709c63 bne ra,t2,80000578 + +800004e4 : +800004e4: 00002097 auipc ra,0x2 +800004e8: c1c08093 addi ra,ra,-996 # 80002100 +800004ec: 00c0a087 flw ft1,12(ra) +800004f0: c000f0d3 fcvt.w.s ra,ft1 +800004f4: 800003b7 lui t2,0x80000 +800004f8: fff38393 addi t2,t2,-1 # 7fffffff <_end+0xffffdecf> +800004fc: 03600193 li gp,54 +80000500: 06709c63 bne ra,t2,80000578 + +80000504 : +80000504: 00002097 auipc ra,0x2 +80000508: bfc08093 addi ra,ra,-1028 # 80002100 +8000050c: 0000a087 flw ft1,0(ra) +80000510: c010f0d3 fcvt.wu.s ra,ft1 +80000514: fff00393 li t2,-1 +80000518: 03e00193 li gp,62 +8000051c: 04709e63 bne ra,t2,80000578 + +80000520 : +80000520: 00002097 auipc ra,0x2 +80000524: be008093 addi ra,ra,-1056 # 80002100 +80000528: 0040a087 flw ft1,4(ra) +8000052c: c010f0d3 fcvt.wu.s ra,ft1 +80000530: fff00393 li t2,-1 +80000534: 03f00193 li gp,63 +80000538: 04709063 bne ra,t2,80000578 + +8000053c : +8000053c: 00002097 auipc ra,0x2 +80000540: bc408093 addi ra,ra,-1084 # 80002100 +80000544: 0080a087 flw ft1,8(ra) +80000548: c010f0d3 fcvt.wu.s ra,ft1 +8000054c: 00000393 li t2,0 +80000550: 04000193 li gp,64 +80000554: 02709263 bne ra,t2,80000578 + +80000558 : +80000558: 00002097 auipc ra,0x2 +8000055c: ba808093 addi ra,ra,-1112 # 80002100 +80000560: 00c0a087 flw ft1,12(ra) +80000564: c010f0d3 fcvt.wu.s ra,ft1 +80000568: fff00393 li t2,-1 +8000056c: 04100193 li gp,65 +80000570: 00709463 bne ra,t2,80000578 +80000574: 02301063 bne zero,gp,80000594 + +80000578 : +80000578: 0ff0000f fence +8000057c: 00018063 beqz gp,8000057c +80000580: 00119193 slli gp,gp,0x1 +80000584: 0011e193 ori gp,gp,1 +80000588: 05d00893 li a7,93 +8000058c: 00018513 mv a0,gp +80000590: 00000073 ecall + +80000594 : +80000594: 0ff0000f fence +80000598: 00100193 li gp,1 +8000059c: 05d00893 li a7,93 +800005a0: 00000513 li a0,0 +800005a4: 00000073 ecall +800005a8: c0001073 unimp +800005ac: 0000 unimp +800005ae: 0000 unimp +800005b0: 0000 unimp +800005b2: 0000 unimp +800005b4: 0000 unimp +800005b6: 0000 unimp +800005b8: 0000 unimp +800005ba: 0000 unimp +800005bc: 0000 unimp +800005be: 0000 unimp +800005c0: 0000 unimp +800005c2: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: cccd beqz s1,800020ba +80002002: bf8c fsd fa1,56(a5) +80002004: 0000 unimp +80002006: 0000 unimp +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: ffff 0xffff +8000200e: ffff 0xffff + +80002010 : +80002010: 0000 unimp +80002012: bf80 fsd fs0,56(a5) +80002014: 0000 unimp +80002016: 0000 unimp +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: ffff 0xffff +8000201e: ffff 0xffff + +80002020 : +80002020: 6666 flw fa2,88(sp) +80002022: bf66 fsd fs9,440(sp) +80002024: 0000 unimp +80002026: 0000 unimp +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 0000 unimp +8000202e: 0000 unimp + +80002030 : +80002030: 6666 flw fa2,88(sp) +80002032: 3f66 fld ft10,120(sp) +80002034: 0000 unimp +80002036: 0000 unimp +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: 0000 unimp +8000203e: 0000 unimp + +80002040 : +80002040: 0000 unimp +80002042: 3f80 fld fs0,56(a5) +80002044: 0000 unimp +80002046: 0000 unimp +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 0001 nop +8000204e: 0000 unimp + +80002050 : +80002050: cccd beqz s1,8000210a +80002052: 3f8c fld fa1,56(a5) +80002054: 0000 unimp +80002056: 0000 unimp +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0001 nop +8000205e: 0000 unimp + +80002060 : +80002060: d05e sw s7,32(sp) +80002062: cf32 sw a2,156(sp) +80002064: 0000 unimp +80002066: 0000 unimp +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 8000 0x8000 + +80002070 : +80002070: d05e sw s7,32(sp) +80002072: 4f32 lw t5,12(sp) +80002074: 0000 unimp +80002076: 0000 unimp +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: ffff 0xffff +8000207e: 7fff 0x7fff + +80002080 : +80002080: 0000 unimp +80002082: c040 sw s0,4(s0) +80002084: 0000 unimp +80002086: 0000 unimp +80002088: 0000 unimp +8000208a: 0000 unimp +8000208c: 0000 unimp +8000208e: 0000 unimp + +80002090 : +80002090: 0000 unimp +80002092: bf80 fsd fs0,56(a5) +80002094: 0000 unimp +80002096: 0000 unimp +80002098: 0000 unimp +8000209a: 0000 unimp +8000209c: 0000 unimp +8000209e: 0000 unimp + +800020a0 : +800020a0: 6666 flw fa2,88(sp) +800020a2: bf66 fsd fs9,440(sp) +800020a4: 0000 unimp +800020a6: 0000 unimp +800020a8: 0000 unimp +800020aa: 0000 unimp +800020ac: 0000 unimp +800020ae: 0000 unimp + +800020b0 : +800020b0: 6666 flw fa2,88(sp) +800020b2: 3f66 fld ft10,120(sp) +800020b4: 0000 unimp +800020b6: 0000 unimp +800020b8: 0000 unimp +800020ba: 0000 unimp +800020bc: 0000 unimp +800020be: 0000 unimp + +800020c0 : +800020c0: 0000 unimp +800020c2: 3f80 fld fs0,56(a5) +800020c4: 0000 unimp +800020c6: 0000 unimp +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0001 nop +800020ce: 0000 unimp + +800020d0 : +800020d0: cccd beqz s1,8000218a <_end+0x5a> +800020d2: 3f8c fld fa1,56(a5) +800020d4: 0000 unimp +800020d6: 0000 unimp +800020d8: 0000 unimp +800020da: 0000 unimp +800020dc: 0001 nop +800020de: 0000 unimp + +800020e0 : +800020e0: d05e sw s7,32(sp) +800020e2: cf32 sw a2,156(sp) +800020e4: 0000 unimp +800020e6: 0000 unimp +800020e8: 0000 unimp +800020ea: 0000 unimp +800020ec: 0000 unimp +800020ee: 0000 unimp + +800020f0 : +800020f0: d05e sw s7,32(sp) +800020f2: 4f32 lw t5,12(sp) +800020f4: 0000 unimp +800020f6: 0000 unimp +800020f8: 0000 unimp +800020fa: 0000 unimp +800020fc: 5e00 lw s0,56(a2) +800020fe: b2d0 fsd fa2,160(a3) + +80002100 : +80002100: ffff 0xffff +80002102: ffff 0xffff +80002104: ffff 0xffff +80002106: 7fff 0x7fff +80002108: 0000 unimp +8000210a: ff80 fsw fs0,56(a5) +8000210c: 0000 unimp +8000210e: 7f80 flw fs0,56(a5) + +80002110 : +80002110: ffff 0xffff +80002112: ffff 0xffff +80002114: ffff 0xffff +80002116: ffff 0xffff +80002118: ffff 0xffff +8000211a: ffff 0xffff +8000211c: ffff 0xffff +8000211e: 7fff 0x7fff +80002120: 0000 unimp +80002122: 0000 unimp +80002124: 0000 unimp +80002126: fff0 fsw fa2,124(a5) +80002128: 0000 unimp +8000212a: 0000 unimp +8000212c: 0000 unimp +8000212e: 7ff0 flw fa2,124(a5) diff --git a/src/test/resources/asm/rv32uf-p-fdiv.dump b/src/test/resources/asm/rv32uf-p-fdiv.dump new file mode 100644 index 0000000..0f13dda --- /dev/null +++ b/src/test/resources/asm/rv32uf-p-fdiv.dump @@ -0,0 +1,322 @@ + +rv32uf-p-fdiv: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: 00000093 li ra,0 +80000050: 00000113 li sp,0 +80000054: 00000193 li gp,0 +80000058: 00000213 li tp,0 +8000005c: 00000293 li t0,0 +80000060: 00000313 li t1,0 +80000064: 00000393 li t2,0 +80000068: 00000413 li s0,0 +8000006c: 00000493 li s1,0 +80000070: 00000513 li a0,0 +80000074: 00000593 li a1,0 +80000078: 00000613 li a2,0 +8000007c: 00000693 li a3,0 +80000080: 00000713 li a4,0 +80000084: 00000793 li a5,0 +80000088: 00000813 li a6,0 +8000008c: 00000893 li a7,0 +80000090: 00000913 li s2,0 +80000094: 00000993 li s3,0 +80000098: 00000a13 li s4,0 +8000009c: 00000a93 li s5,0 +800000a0: 00000b13 li s6,0 +800000a4: 00000b93 li s7,0 +800000a8: 00000c13 li s8,0 +800000ac: 00000c93 li s9,0 +800000b0: 00000d13 li s10,0 +800000b4: 00000d93 li s11,0 +800000b8: 00000e13 li t3,0 +800000bc: 00000e93 li t4,0 +800000c0: 00000f13 li t5,0 +800000c4: 00000f93 li t6,0 +800000c8: f1402573 csrr a0,mhartid +800000cc: 00051063 bnez a0,800000cc +800000d0: 00000297 auipc t0,0x0 +800000d4: 01028293 addi t0,t0,16 # 800000e0 +800000d8: 30529073 csrw mtvec,t0 +800000dc: 18005073 csrwi satp,0 +800000e0: 00000297 auipc t0,0x0 +800000e4: 02028293 addi t0,t0,32 # 80000100 +800000e8: 30529073 csrw mtvec,t0 +800000ec: 800002b7 lui t0,0x80000 +800000f0: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdf7f> +800000f4: 3b029073 csrw pmpaddr0,t0 +800000f8: 01f00293 li t0,31 +800000fc: 3a029073 csrw pmpcfg0,t0 +80000100: 30405073 csrwi mie,0 +80000104: 00000297 auipc t0,0x0 +80000108: 01428293 addi t0,t0,20 # 80000118 +8000010c: 30529073 csrw mtvec,t0 +80000110: 30205073 csrwi medeleg,0 +80000114: 30305073 csrwi mideleg,0 +80000118: 00000193 li gp,0 +8000011c: 00000297 auipc t0,0x0 +80000120: ee828293 addi t0,t0,-280 # 80000004 +80000124: 30529073 csrw mtvec,t0 +80000128: 00100513 li a0,1 +8000012c: 01f51513 slli a0,a0,0x1f +80000130: 00054c63 bltz a0,80000148 +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 05d00893 li a7,93 +80000140: 00000513 li a0,0 +80000144: 00000073 ecall +80000148: 80000297 auipc t0,0x80000 +8000014c: eb828293 addi t0,t0,-328 # 0 <_start-0x80000000> +80000150: 00028a63 beqz t0,80000164 +80000154: 10529073 csrw stvec,t0 +80000158: 0000b2b7 lui t0,0xb +8000015c: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +80000160: 30229073 csrw medeleg,t0 +80000164: 30005073 csrwi mstatus,0 +80000168: 00002537 lui a0,0x2 +8000016c: 30052073 csrs mstatus,a0 +80000170: 00305073 csrwi fcsr,0 +80000174: 00000297 auipc t0,0x0 +80000178: 01428293 addi t0,t0,20 # 80000188 +8000017c: 34129073 csrw mepc,t0 +80000180: f1402573 csrr a0,mhartid +80000184: 30200073 mret + +80000188 : +80000188: 00200193 li gp,2 +8000018c: 00002517 auipc a0,0x2 +80000190: e7450513 addi a0,a0,-396 # 80002000 +80000194: 00052007 flw ft0,0(a0) +80000198: 00452087 flw ft1,4(a0) +8000019c: 00852107 flw ft2,8(a0) +800001a0: 00c52683 lw a3,12(a0) +800001a4: 181071d3 fdiv.s ft3,ft0,ft1 +800001a8: e0018553 fmv.x.w a0,ft3 +800001ac: 001015f3 fsflags a1,zero +800001b0: 00100613 li a2,1 +800001b4: 14d51263 bne a0,a3,800002f8 +800001b8: 14c59063 bne a1,a2,800002f8 + +800001bc : +800001bc: 00300193 li gp,3 +800001c0: 00002517 auipc a0,0x2 +800001c4: e5050513 addi a0,a0,-432 # 80002010 +800001c8: 00052007 flw ft0,0(a0) +800001cc: 00452087 flw ft1,4(a0) +800001d0: 00852107 flw ft2,8(a0) +800001d4: 00c52683 lw a3,12(a0) +800001d8: 181071d3 fdiv.s ft3,ft0,ft1 +800001dc: e0018553 fmv.x.w a0,ft3 +800001e0: 001015f3 fsflags a1,zero +800001e4: 00100613 li a2,1 +800001e8: 10d51863 bne a0,a3,800002f8 +800001ec: 10c59663 bne a1,a2,800002f8 + +800001f0 : +800001f0: 00400193 li gp,4 +800001f4: 00002517 auipc a0,0x2 +800001f8: e2c50513 addi a0,a0,-468 # 80002020 +800001fc: 00052007 flw ft0,0(a0) +80000200: 00452087 flw ft1,4(a0) +80000204: 00852107 flw ft2,8(a0) +80000208: 00c52683 lw a3,12(a0) +8000020c: 181071d3 fdiv.s ft3,ft0,ft1 +80000210: e0018553 fmv.x.w a0,ft3 +80000214: 001015f3 fsflags a1,zero +80000218: 00000613 li a2,0 +8000021c: 0cd51e63 bne a0,a3,800002f8 +80000220: 0cc59c63 bne a1,a2,800002f8 + +80000224 : +80000224: 00500193 li gp,5 +80000228: 00002517 auipc a0,0x2 +8000022c: e0850513 addi a0,a0,-504 # 80002030 +80000230: 00052007 flw ft0,0(a0) +80000234: 00452087 flw ft1,4(a0) +80000238: 00852107 flw ft2,8(a0) +8000023c: 00c52683 lw a3,12(a0) +80000240: 580071d3 fsqrt.s ft3,ft0 +80000244: e0018553 fmv.x.w a0,ft3 +80000248: 001015f3 fsflags a1,zero +8000024c: 00100613 li a2,1 +80000250: 0ad51463 bne a0,a3,800002f8 +80000254: 0ac59263 bne a1,a2,800002f8 + +80000258 : +80000258: 00600193 li gp,6 +8000025c: 00002517 auipc a0,0x2 +80000260: de450513 addi a0,a0,-540 # 80002040 +80000264: 00052007 flw ft0,0(a0) +80000268: 00452087 flw ft1,4(a0) +8000026c: 00852107 flw ft2,8(a0) +80000270: 00c52683 lw a3,12(a0) +80000274: 580071d3 fsqrt.s ft3,ft0 +80000278: e0018553 fmv.x.w a0,ft3 +8000027c: 001015f3 fsflags a1,zero +80000280: 00000613 li a2,0 +80000284: 06d51a63 bne a0,a3,800002f8 +80000288: 06c59863 bne a1,a2,800002f8 + +8000028c : +8000028c: 00700193 li gp,7 +80000290: 00002517 auipc a0,0x2 +80000294: dc050513 addi a0,a0,-576 # 80002050 +80000298: 00052007 flw ft0,0(a0) +8000029c: 00452087 flw ft1,4(a0) +800002a0: 00852107 flw ft2,8(a0) +800002a4: 00c52683 lw a3,12(a0) +800002a8: 580071d3 fsqrt.s ft3,ft0 +800002ac: e0018553 fmv.x.w a0,ft3 +800002b0: 001015f3 fsflags a1,zero +800002b4: 01000613 li a2,16 +800002b8: 04d51063 bne a0,a3,800002f8 +800002bc: 02c59e63 bne a1,a2,800002f8 + +800002c0 : +800002c0: 00800193 li gp,8 +800002c4: 00002517 auipc a0,0x2 +800002c8: da050513 addi a0,a0,-608 # 80002064 +800002cc: 00052007 flw ft0,0(a0) +800002d0: 00452087 flw ft1,4(a0) +800002d4: 00852107 flw ft2,8(a0) +800002d8: 00c52683 lw a3,12(a0) +800002dc: 580071d3 fsqrt.s ft3,ft0 +800002e0: e0018553 fmv.x.w a0,ft3 +800002e4: 001015f3 fsflags a1,zero +800002e8: 00100613 li a2,1 +800002ec: 00d51663 bne a0,a3,800002f8 +800002f0: 00c59463 bne a1,a2,800002f8 +800002f4: 02301063 bne zero,gp,80000314 + +800002f8 : +800002f8: 0ff0000f fence +800002fc: 00018063 beqz gp,800002fc +80000300: 00119193 slli gp,gp,0x1 +80000304: 0011e193 ori gp,gp,1 +80000308: 05d00893 li a7,93 +8000030c: 00018513 mv a0,gp +80000310: 00000073 ecall + +80000314 : +80000314: 0ff0000f fence +80000318: 00100193 li gp,1 +8000031c: 05d00893 li a7,93 +80000320: 00000513 li a0,0 +80000324: 00000073 ecall +80000328: c0001073 unimp +8000032c: 0000 unimp +8000032e: 0000 unimp +80000330: 0000 unimp +80000332: 0000 unimp +80000334: 0000 unimp +80000336: 0000 unimp +80000338: 0000 unimp +8000033a: 0000 unimp +8000033c: 0000 unimp +8000033e: 0000 unimp +80000340: 0000 unimp +80000342: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 40490fdb 0x40490fdb +80002004: f854 fsw fa3,52(s0) +80002006: 402d c.li zero,11 +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: eee0 fsw fs0,92(a3) +8000200e: sltiu t6,zero,1024 + +80002010 : +80002010: 4000 lw s0,0(s0) +80002012: c49a sw t1,72(sp) +80002014: 449a6333 0x449a6333 +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: c5a2 sw s0,200(sp) +8000201e: bf7f 0xbf7f + +80002020 : +80002020: 40490fdb 0x40490fdb +80002024: 0000 unimp +80002026: 3f80 fld fs0,56(a5) +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: 40490fdb 0x40490fdb + +80002030 : +80002030: 40490fdb 0x40490fdb +80002034: 0000 unimp +80002036: 0000 unimp +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: dfc5 beqz a5,80001ff4 +8000203e: 3fe2 fld ft11,56(sp) + +80002040 : +80002040: 4000 lw s0,0(s0) +80002042: 461c lw a5,8(a2) +80002044: 0000 unimp +80002046: 0000 unimp +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 0000 unimp +8000204e: 42c8 lw a0,4(a3) + +80002050 : +80002050: 0000 unimp +80002052: bf80 fsd fs0,56(a5) +80002054: 0000 unimp +80002056: 0000 unimp +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0000 unimp +8000205e: 7fc0 flw fs0,60(a5) +80002060: 0000 unimp +80002062: 0000 unimp + +80002064 : +80002064: 0000 unimp +80002066: 0000432b 0x432b +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 0000 unimp +80002070: 3a26 fld fs4,104(sp) +80002072: 4151 li sp,20 +80002074: 0000 unimp +80002076: 0000 unimp +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: 0000 unimp +8000207e: 0000 unimp diff --git a/src/test/resources/asm/rv32uf-p-fmadd.dump b/src/test/resources/asm/rv32uf-p-fmadd.dump new file mode 100644 index 0000000..bfec06c --- /dev/null +++ b/src/test/resources/asm/rv32uf-p-fmadd.dump @@ -0,0 +1,439 @@ + +rv32uf-p-fmadd: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: 00000093 li ra,0 +80000050: 00000113 li sp,0 +80000054: 00000193 li gp,0 +80000058: 00000213 li tp,0 +8000005c: 00000293 li t0,0 +80000060: 00000313 li t1,0 +80000064: 00000393 li t2,0 +80000068: 00000413 li s0,0 +8000006c: 00000493 li s1,0 +80000070: 00000513 li a0,0 +80000074: 00000593 li a1,0 +80000078: 00000613 li a2,0 +8000007c: 00000693 li a3,0 +80000080: 00000713 li a4,0 +80000084: 00000793 li a5,0 +80000088: 00000813 li a6,0 +8000008c: 00000893 li a7,0 +80000090: 00000913 li s2,0 +80000094: 00000993 li s3,0 +80000098: 00000a13 li s4,0 +8000009c: 00000a93 li s5,0 +800000a0: 00000b13 li s6,0 +800000a4: 00000b93 li s7,0 +800000a8: 00000c13 li s8,0 +800000ac: 00000c93 li s9,0 +800000b0: 00000d13 li s10,0 +800000b4: 00000d93 li s11,0 +800000b8: 00000e13 li t3,0 +800000bc: 00000e93 li t4,0 +800000c0: 00000f13 li t5,0 +800000c4: 00000f93 li t6,0 +800000c8: f1402573 csrr a0,mhartid +800000cc: 00051063 bnez a0,800000cc +800000d0: 00000297 auipc t0,0x0 +800000d4: 01028293 addi t0,t0,16 # 800000e0 +800000d8: 30529073 csrw mtvec,t0 +800000dc: 18005073 csrwi satp,0 +800000e0: 00000297 auipc t0,0x0 +800000e4: 02028293 addi t0,t0,32 # 80000100 +800000e8: 30529073 csrw mtvec,t0 +800000ec: 800002b7 lui t0,0x80000 +800000f0: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdf3f> +800000f4: 3b029073 csrw pmpaddr0,t0 +800000f8: 01f00293 li t0,31 +800000fc: 3a029073 csrw pmpcfg0,t0 +80000100: 30405073 csrwi mie,0 +80000104: 00000297 auipc t0,0x0 +80000108: 01428293 addi t0,t0,20 # 80000118 +8000010c: 30529073 csrw mtvec,t0 +80000110: 30205073 csrwi medeleg,0 +80000114: 30305073 csrwi mideleg,0 +80000118: 00000193 li gp,0 +8000011c: 00000297 auipc t0,0x0 +80000120: ee828293 addi t0,t0,-280 # 80000004 +80000124: 30529073 csrw mtvec,t0 +80000128: 00100513 li a0,1 +8000012c: 01f51513 slli a0,a0,0x1f +80000130: 00054c63 bltz a0,80000148 +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 05d00893 li a7,93 +80000140: 00000513 li a0,0 +80000144: 00000073 ecall +80000148: 80000297 auipc t0,0x80000 +8000014c: eb828293 addi t0,t0,-328 # 0 <_start-0x80000000> +80000150: 00028a63 beqz t0,80000164 +80000154: 10529073 csrw stvec,t0 +80000158: 0000b2b7 lui t0,0xb +8000015c: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +80000160: 30229073 csrw medeleg,t0 +80000164: 30005073 csrwi mstatus,0 +80000168: 00002537 lui a0,0x2 +8000016c: 30052073 csrs mstatus,a0 +80000170: 00305073 csrwi fcsr,0 +80000174: 00000297 auipc t0,0x0 +80000178: 01428293 addi t0,t0,20 # 80000188 +8000017c: 34129073 csrw mepc,t0 +80000180: f1402573 csrr a0,mhartid +80000184: 30200073 mret + +80000188 : +80000188: 00200193 li gp,2 +8000018c: 00002517 auipc a0,0x2 +80000190: e7450513 addi a0,a0,-396 # 80002000 +80000194: 00052007 flw ft0,0(a0) +80000198: 00452087 flw ft1,4(a0) +8000019c: 00852107 flw ft2,8(a0) +800001a0: 00c52683 lw a3,12(a0) +800001a4: 101071c3 fmadd.s ft3,ft0,ft1,ft2 +800001a8: e0018553 fmv.x.w a0,ft3 +800001ac: 001015f3 fsflags a1,zero +800001b0: 00000613 li a2,0 +800001b4: 24d51463 bne a0,a3,800003fc +800001b8: 24c59263 bne a1,a2,800003fc + +800001bc : +800001bc: 00300193 li gp,3 +800001c0: 00002517 auipc a0,0x2 +800001c4: e5050513 addi a0,a0,-432 # 80002010 +800001c8: 00052007 flw ft0,0(a0) +800001cc: 00452087 flw ft1,4(a0) +800001d0: 00852107 flw ft2,8(a0) +800001d4: 00c52683 lw a3,12(a0) +800001d8: 101071c3 fmadd.s ft3,ft0,ft1,ft2 +800001dc: e0018553 fmv.x.w a0,ft3 +800001e0: 001015f3 fsflags a1,zero +800001e4: 00100613 li a2,1 +800001e8: 20d51a63 bne a0,a3,800003fc +800001ec: 20c59863 bne a1,a2,800003fc + +800001f0 : +800001f0: 00400193 li gp,4 +800001f4: 00002517 auipc a0,0x2 +800001f8: e2c50513 addi a0,a0,-468 # 80002020 +800001fc: 00052007 flw ft0,0(a0) +80000200: 00452087 flw ft1,4(a0) +80000204: 00852107 flw ft2,8(a0) +80000208: 00c52683 lw a3,12(a0) +8000020c: 101071c3 fmadd.s ft3,ft0,ft1,ft2 +80000210: e0018553 fmv.x.w a0,ft3 +80000214: 001015f3 fsflags a1,zero +80000218: 00000613 li a2,0 +8000021c: 1ed51063 bne a0,a3,800003fc +80000220: 1cc59e63 bne a1,a2,800003fc + +80000224 : +80000224: 00500193 li gp,5 +80000228: 00002517 auipc a0,0x2 +8000022c: e0850513 addi a0,a0,-504 # 80002030 +80000230: 00052007 flw ft0,0(a0) +80000234: 00452087 flw ft1,4(a0) +80000238: 00852107 flw ft2,8(a0) +8000023c: 00c52683 lw a3,12(a0) +80000240: 101071cf fnmadd.s ft3,ft0,ft1,ft2 +80000244: e0018553 fmv.x.w a0,ft3 +80000248: 001015f3 fsflags a1,zero +8000024c: 00000613 li a2,0 +80000250: 1ad51663 bne a0,a3,800003fc +80000254: 1ac59463 bne a1,a2,800003fc + +80000258 : +80000258: 00600193 li gp,6 +8000025c: 00002517 auipc a0,0x2 +80000260: de450513 addi a0,a0,-540 # 80002040 +80000264: 00052007 flw ft0,0(a0) +80000268: 00452087 flw ft1,4(a0) +8000026c: 00852107 flw ft2,8(a0) +80000270: 00c52683 lw a3,12(a0) +80000274: 101071cf fnmadd.s ft3,ft0,ft1,ft2 +80000278: e0018553 fmv.x.w a0,ft3 +8000027c: 001015f3 fsflags a1,zero +80000280: 00100613 li a2,1 +80000284: 16d51c63 bne a0,a3,800003fc +80000288: 16c59a63 bne a1,a2,800003fc + +8000028c : +8000028c: 00700193 li gp,7 +80000290: 00002517 auipc a0,0x2 +80000294: dc050513 addi a0,a0,-576 # 80002050 +80000298: 00052007 flw ft0,0(a0) +8000029c: 00452087 flw ft1,4(a0) +800002a0: 00852107 flw ft2,8(a0) +800002a4: 00c52683 lw a3,12(a0) +800002a8: 101071cf fnmadd.s ft3,ft0,ft1,ft2 +800002ac: e0018553 fmv.x.w a0,ft3 +800002b0: 001015f3 fsflags a1,zero +800002b4: 00000613 li a2,0 +800002b8: 14d51263 bne a0,a3,800003fc +800002bc: 14c59063 bne a1,a2,800003fc + +800002c0 : +800002c0: 00800193 li gp,8 +800002c4: 00002517 auipc a0,0x2 +800002c8: d9c50513 addi a0,a0,-612 # 80002060 +800002cc: 00052007 flw ft0,0(a0) +800002d0: 00452087 flw ft1,4(a0) +800002d4: 00852107 flw ft2,8(a0) +800002d8: 00c52683 lw a3,12(a0) +800002dc: 101071c7 fmsub.s ft3,ft0,ft1,ft2 +800002e0: e0018553 fmv.x.w a0,ft3 +800002e4: 001015f3 fsflags a1,zero +800002e8: 00000613 li a2,0 +800002ec: 10d51863 bne a0,a3,800003fc +800002f0: 10c59663 bne a1,a2,800003fc + +800002f4 : +800002f4: 00900193 li gp,9 +800002f8: 00002517 auipc a0,0x2 +800002fc: d7850513 addi a0,a0,-648 # 80002070 +80000300: 00052007 flw ft0,0(a0) +80000304: 00452087 flw ft1,4(a0) +80000308: 00852107 flw ft2,8(a0) +8000030c: 00c52683 lw a3,12(a0) +80000310: 101071c7 fmsub.s ft3,ft0,ft1,ft2 +80000314: e0018553 fmv.x.w a0,ft3 +80000318: 001015f3 fsflags a1,zero +8000031c: 00100613 li a2,1 +80000320: 0cd51e63 bne a0,a3,800003fc +80000324: 0cc59c63 bne a1,a2,800003fc + +80000328 : +80000328: 00a00193 li gp,10 +8000032c: 00002517 auipc a0,0x2 +80000330: d5450513 addi a0,a0,-684 # 80002080 +80000334: 00052007 flw ft0,0(a0) +80000338: 00452087 flw ft1,4(a0) +8000033c: 00852107 flw ft2,8(a0) +80000340: 00c52683 lw a3,12(a0) +80000344: 101071c7 fmsub.s ft3,ft0,ft1,ft2 +80000348: e0018553 fmv.x.w a0,ft3 +8000034c: 001015f3 fsflags a1,zero +80000350: 00000613 li a2,0 +80000354: 0ad51463 bne a0,a3,800003fc +80000358: 0ac59263 bne a1,a2,800003fc + +8000035c : +8000035c: 00b00193 li gp,11 +80000360: 00002517 auipc a0,0x2 +80000364: d3050513 addi a0,a0,-720 # 80002090 +80000368: 00052007 flw ft0,0(a0) +8000036c: 00452087 flw ft1,4(a0) +80000370: 00852107 flw ft2,8(a0) +80000374: 00c52683 lw a3,12(a0) +80000378: 101071cb fnmsub.s ft3,ft0,ft1,ft2 +8000037c: e0018553 fmv.x.w a0,ft3 +80000380: 001015f3 fsflags a1,zero +80000384: 00000613 li a2,0 +80000388: 06d51a63 bne a0,a3,800003fc +8000038c: 06c59863 bne a1,a2,800003fc + +80000390 : +80000390: 00c00193 li gp,12 +80000394: 00002517 auipc a0,0x2 +80000398: d0c50513 addi a0,a0,-756 # 800020a0 +8000039c: 00052007 flw ft0,0(a0) +800003a0: 00452087 flw ft1,4(a0) +800003a4: 00852107 flw ft2,8(a0) +800003a8: 00c52683 lw a3,12(a0) +800003ac: 101071cb fnmsub.s ft3,ft0,ft1,ft2 +800003b0: e0018553 fmv.x.w a0,ft3 +800003b4: 001015f3 fsflags a1,zero +800003b8: 00100613 li a2,1 +800003bc: 04d51063 bne a0,a3,800003fc +800003c0: 02c59e63 bne a1,a2,800003fc + +800003c4 : +800003c4: 00d00193 li gp,13 +800003c8: 00002517 auipc a0,0x2 +800003cc: ce850513 addi a0,a0,-792 # 800020b0 +800003d0: 00052007 flw ft0,0(a0) +800003d4: 00452087 flw ft1,4(a0) +800003d8: 00852107 flw ft2,8(a0) +800003dc: 00c52683 lw a3,12(a0) +800003e0: 101071cb fnmsub.s ft3,ft0,ft1,ft2 +800003e4: e0018553 fmv.x.w a0,ft3 +800003e8: 001015f3 fsflags a1,zero +800003ec: 00000613 li a2,0 +800003f0: 00d51663 bne a0,a3,800003fc +800003f4: 00c59463 bne a1,a2,800003fc +800003f8: 02301063 bne zero,gp,80000418 + +800003fc : +800003fc: 0ff0000f fence +80000400: 00018063 beqz gp,80000400 +80000404: 00119193 slli gp,gp,0x1 +80000408: 0011e193 ori gp,gp,1 +8000040c: 05d00893 li a7,93 +80000410: 00018513 mv a0,gp +80000414: 00000073 ecall + +80000418 : +80000418: 0ff0000f fence +8000041c: 00100193 li gp,1 +80000420: 05d00893 li a7,93 +80000424: 00000513 li a0,0 +80000428: 00000073 ecall +8000042c: c0001073 unimp +80000430: 0000 unimp +80000432: 0000 unimp +80000434: 0000 unimp +80000436: 0000 unimp +80000438: 0000 unimp +8000043a: 0000 unimp +8000043c: 0000 unimp +8000043e: 0000 unimp +80000440: 0000 unimp +80000442: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 3f80 fld fs0,56(a5) +80002004: 0000 unimp +80002006: 4020 lw s0,64(s0) +80002008: 0000 unimp +8000200a: 3f80 fld fs0,56(a5) +8000200c: 0000 unimp +8000200e: 4060 lw s0,68(s0) + +80002010 : +80002010: 0000 unimp +80002012: bf80 fsd fs0,56(a5) +80002014: c49a6333 0xc49a6333 +80002018: cccd beqz s1,800020d2 <_end+0x12> +8000201a: 3f8c fld fa1,56(a5) +8000201c: 8666 mv a2,s9 +8000201e: 449a lw s1,132(sp) + +80002020 : +80002020: 0000 unimp +80002022: 4000 lw s0,0(s0) +80002024: 0000 unimp +80002026: c0a0 sw s0,64(s1) +80002028: 0000 unimp +8000202a: c000 sw s0,0(s0) +8000202c: 0000 unimp +8000202e: c140 sw s0,4(a0) + +80002030 : +80002030: 0000 unimp +80002032: 3f80 fld fs0,56(a5) +80002034: 0000 unimp +80002036: 4020 lw s0,64(s0) +80002038: 0000 unimp +8000203a: 3f80 fld fs0,56(a5) +8000203c: 0000 unimp +8000203e: c060 sw s0,68(s0) + +80002040 : +80002040: 0000 unimp +80002042: bf80 fsd fs0,56(a5) +80002044: c49a6333 0xc49a6333 +80002048: cccd beqz s1,80002102 <_end+0x42> +8000204a: 3f8c fld fa1,56(a5) +8000204c: 8666 mv a2,s9 +8000204e: c49a sw t1,72(sp) + +80002050 : +80002050: 0000 unimp +80002052: 4000 lw s0,0(s0) +80002054: 0000 unimp +80002056: c0a0 sw s0,64(s1) +80002058: 0000 unimp +8000205a: c000 sw s0,0(s0) +8000205c: 0000 unimp +8000205e: 4140 lw s0,4(a0) + +80002060 : +80002060: 0000 unimp +80002062: 3f80 fld fs0,56(a5) +80002064: 0000 unimp +80002066: 4020 lw s0,64(s0) +80002068: 0000 unimp +8000206a: 3f80 fld fs0,56(a5) +8000206c: 0000 unimp +8000206e: 3fc0 fld fs0,184(a5) + +80002070 : +80002070: 0000 unimp +80002072: bf80 fsd fs0,56(a5) +80002074: c49a6333 0xc49a6333 +80002078: cccd beqz s1,80002132 <_end+0x72> +8000207a: 3f8c fld fa1,56(a5) +8000207c: 4000 lw s0,0(s0) +8000207e: 449a lw s1,132(sp) + +80002080 : +80002080: 0000 unimp +80002082: 4000 lw s0,0(s0) +80002084: 0000 unimp +80002086: c0a0 sw s0,64(s1) +80002088: 0000 unimp +8000208a: c000 sw s0,0(s0) +8000208c: 0000 unimp +8000208e: c100 sw s0,0(a0) + +80002090 : +80002090: 0000 unimp +80002092: 3f80 fld fs0,56(a5) +80002094: 0000 unimp +80002096: 4020 lw s0,64(s0) +80002098: 0000 unimp +8000209a: 3f80 fld fs0,56(a5) +8000209c: 0000 unimp +8000209e: bfc0 fsd fs0,184(a5) + +800020a0 : +800020a0: 0000 unimp +800020a2: bf80 fsd fs0,56(a5) +800020a4: c49a6333 0xc49a6333 +800020a8: cccd beqz s1,80002162 <_end+0xa2> +800020aa: 3f8c fld fa1,56(a5) +800020ac: 4000 lw s0,0(s0) +800020ae: c49a sw t1,72(sp) + +800020b0 : +800020b0: 0000 unimp +800020b2: 4000 lw s0,0(s0) +800020b4: 0000 unimp +800020b6: c0a0 sw s0,64(s1) +800020b8: 0000 unimp +800020ba: c000 sw s0,0(s0) +800020bc: 0000 unimp +800020be: 4100 lw s0,0(a0) diff --git a/src/test/resources/asm/rv32uf-p-fmin.dump b/src/test/resources/asm/rv32uf-p-fmin.dump new file mode 100644 index 0000000..7d75180 --- /dev/null +++ b/src/test/resources/asm/rv32uf-p-fmin.dump @@ -0,0 +1,581 @@ + +rv32uf-p-fmin: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: 00000093 li ra,0 +80000050: 00000113 li sp,0 +80000054: 00000193 li gp,0 +80000058: 00000213 li tp,0 +8000005c: 00000293 li t0,0 +80000060: 00000313 li t1,0 +80000064: 00000393 li t2,0 +80000068: 00000413 li s0,0 +8000006c: 00000493 li s1,0 +80000070: 00000513 li a0,0 +80000074: 00000593 li a1,0 +80000078: 00000613 li a2,0 +8000007c: 00000693 li a3,0 +80000080: 00000713 li a4,0 +80000084: 00000793 li a5,0 +80000088: 00000813 li a6,0 +8000008c: 00000893 li a7,0 +80000090: 00000913 li s2,0 +80000094: 00000993 li s3,0 +80000098: 00000a13 li s4,0 +8000009c: 00000a93 li s5,0 +800000a0: 00000b13 li s6,0 +800000a4: 00000b93 li s7,0 +800000a8: 00000c13 li s8,0 +800000ac: 00000c93 li s9,0 +800000b0: 00000d13 li s10,0 +800000b4: 00000d93 li s11,0 +800000b8: 00000e13 li t3,0 +800000bc: 00000e93 li t4,0 +800000c0: 00000f13 li t5,0 +800000c4: 00000f93 li t6,0 +800000c8: f1402573 csrr a0,mhartid +800000cc: 00051063 bnez a0,800000cc +800000d0: 00000297 auipc t0,0x0 +800000d4: 01028293 addi t0,t0,16 # 800000e0 +800000d8: 30529073 csrw mtvec,t0 +800000dc: 18005073 csrwi satp,0 +800000e0: 00000297 auipc t0,0x0 +800000e4: 02028293 addi t0,t0,32 # 80000100 +800000e8: 30529073 csrw mtvec,t0 +800000ec: 800002b7 lui t0,0x80000 +800000f0: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdedf> +800000f4: 3b029073 csrw pmpaddr0,t0 +800000f8: 01f00293 li t0,31 +800000fc: 3a029073 csrw pmpcfg0,t0 +80000100: 30405073 csrwi mie,0 +80000104: 00000297 auipc t0,0x0 +80000108: 01428293 addi t0,t0,20 # 80000118 +8000010c: 30529073 csrw mtvec,t0 +80000110: 30205073 csrwi medeleg,0 +80000114: 30305073 csrwi mideleg,0 +80000118: 00000193 li gp,0 +8000011c: 00000297 auipc t0,0x0 +80000120: ee828293 addi t0,t0,-280 # 80000004 +80000124: 30529073 csrw mtvec,t0 +80000128: 00100513 li a0,1 +8000012c: 01f51513 slli a0,a0,0x1f +80000130: 00054c63 bltz a0,80000148 +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 05d00893 li a7,93 +80000140: 00000513 li a0,0 +80000144: 00000073 ecall +80000148: 80000297 auipc t0,0x80000 +8000014c: eb828293 addi t0,t0,-328 # 0 <_start-0x80000000> +80000150: 00028a63 beqz t0,80000164 +80000154: 10529073 csrw stvec,t0 +80000158: 0000b2b7 lui t0,0xb +8000015c: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +80000160: 30229073 csrw medeleg,t0 +80000164: 30005073 csrwi mstatus,0 +80000168: 00002537 lui a0,0x2 +8000016c: 30052073 csrs mstatus,a0 +80000170: 00305073 csrwi fcsr,0 +80000174: 00000297 auipc t0,0x0 +80000178: 01428293 addi t0,t0,20 # 80000188 +8000017c: 34129073 csrw mepc,t0 +80000180: f1402573 csrr a0,mhartid +80000184: 30200073 mret + +80000188 : +80000188: 00200193 li gp,2 +8000018c: 00002517 auipc a0,0x2 +80000190: e7450513 addi a0,a0,-396 # 80002000 +80000194: 00052007 flw ft0,0(a0) +80000198: 00452087 flw ft1,4(a0) +8000019c: 00852107 flw ft2,8(a0) +800001a0: 00c52683 lw a3,12(a0) +800001a4: 281001d3 fmin.s ft3,ft0,ft1 +800001a8: e0018553 fmv.x.w a0,ft3 +800001ac: 001015f3 fsflags a1,zero +800001b0: 00000613 li a2,0 +800001b4: 38d51063 bne a0,a3,80000534 +800001b8: 36c59e63 bne a1,a2,80000534 + +800001bc : +800001bc: 00300193 li gp,3 +800001c0: 00002517 auipc a0,0x2 +800001c4: e5050513 addi a0,a0,-432 # 80002010 +800001c8: 00052007 flw ft0,0(a0) +800001cc: 00452087 flw ft1,4(a0) +800001d0: 00852107 flw ft2,8(a0) +800001d4: 00c52683 lw a3,12(a0) +800001d8: 281001d3 fmin.s ft3,ft0,ft1 +800001dc: e0018553 fmv.x.w a0,ft3 +800001e0: 001015f3 fsflags a1,zero +800001e4: 00000613 li a2,0 +800001e8: 34d51663 bne a0,a3,80000534 +800001ec: 34c59463 bne a1,a2,80000534 + +800001f0 : +800001f0: 00400193 li gp,4 +800001f4: 00002517 auipc a0,0x2 +800001f8: e2c50513 addi a0,a0,-468 # 80002020 +800001fc: 00052007 flw ft0,0(a0) +80000200: 00452087 flw ft1,4(a0) +80000204: 00852107 flw ft2,8(a0) +80000208: 00c52683 lw a3,12(a0) +8000020c: 281001d3 fmin.s ft3,ft0,ft1 +80000210: e0018553 fmv.x.w a0,ft3 +80000214: 001015f3 fsflags a1,zero +80000218: 00000613 li a2,0 +8000021c: 30d51c63 bne a0,a3,80000534 +80000220: 30c59a63 bne a1,a2,80000534 + +80000224 : +80000224: 00500193 li gp,5 +80000228: 00002517 auipc a0,0x2 +8000022c: e0850513 addi a0,a0,-504 # 80002030 +80000230: 00052007 flw ft0,0(a0) +80000234: 00452087 flw ft1,4(a0) +80000238: 00852107 flw ft2,8(a0) +8000023c: 00c52683 lw a3,12(a0) +80000240: 281001d3 fmin.s ft3,ft0,ft1 +80000244: e0018553 fmv.x.w a0,ft3 +80000248: 001015f3 fsflags a1,zero +8000024c: 00000613 li a2,0 +80000250: 2ed51263 bne a0,a3,80000534 +80000254: 2ec59063 bne a1,a2,80000534 + +80000258 : +80000258: 00600193 li gp,6 +8000025c: 00002517 auipc a0,0x2 +80000260: de450513 addi a0,a0,-540 # 80002040 +80000264: 00052007 flw ft0,0(a0) +80000268: 00452087 flw ft1,4(a0) +8000026c: 00852107 flw ft2,8(a0) +80000270: 00c52683 lw a3,12(a0) +80000274: 281001d3 fmin.s ft3,ft0,ft1 +80000278: e0018553 fmv.x.w a0,ft3 +8000027c: 001015f3 fsflags a1,zero +80000280: 00000613 li a2,0 +80000284: 2ad51863 bne a0,a3,80000534 +80000288: 2ac59663 bne a1,a2,80000534 + +8000028c : +8000028c: 00700193 li gp,7 +80000290: 00002517 auipc a0,0x2 +80000294: dc050513 addi a0,a0,-576 # 80002050 +80000298: 00052007 flw ft0,0(a0) +8000029c: 00452087 flw ft1,4(a0) +800002a0: 00852107 flw ft2,8(a0) +800002a4: 00c52683 lw a3,12(a0) +800002a8: 281001d3 fmin.s ft3,ft0,ft1 +800002ac: e0018553 fmv.x.w a0,ft3 +800002b0: 001015f3 fsflags a1,zero +800002b4: 00000613 li a2,0 +800002b8: 26d51e63 bne a0,a3,80000534 +800002bc: 26c59c63 bne a1,a2,80000534 + +800002c0 : +800002c0: 00c00193 li gp,12 +800002c4: 00002517 auipc a0,0x2 +800002c8: d9c50513 addi a0,a0,-612 # 80002060 +800002cc: 00052007 flw ft0,0(a0) +800002d0: 00452087 flw ft1,4(a0) +800002d4: 00852107 flw ft2,8(a0) +800002d8: 00c52683 lw a3,12(a0) +800002dc: 281011d3 fmax.s ft3,ft0,ft1 +800002e0: e0018553 fmv.x.w a0,ft3 +800002e4: 001015f3 fsflags a1,zero +800002e8: 00000613 li a2,0 +800002ec: 24d51463 bne a0,a3,80000534 +800002f0: 24c59263 bne a1,a2,80000534 + +800002f4 : +800002f4: 00d00193 li gp,13 +800002f8: 00002517 auipc a0,0x2 +800002fc: d7850513 addi a0,a0,-648 # 80002070 +80000300: 00052007 flw ft0,0(a0) +80000304: 00452087 flw ft1,4(a0) +80000308: 00852107 flw ft2,8(a0) +8000030c: 00c52683 lw a3,12(a0) +80000310: 281011d3 fmax.s ft3,ft0,ft1 +80000314: e0018553 fmv.x.w a0,ft3 +80000318: 001015f3 fsflags a1,zero +8000031c: 00000613 li a2,0 +80000320: 20d51a63 bne a0,a3,80000534 +80000324: 20c59863 bne a1,a2,80000534 + +80000328 : +80000328: 00e00193 li gp,14 +8000032c: 00002517 auipc a0,0x2 +80000330: d5450513 addi a0,a0,-684 # 80002080 +80000334: 00052007 flw ft0,0(a0) +80000338: 00452087 flw ft1,4(a0) +8000033c: 00852107 flw ft2,8(a0) +80000340: 00c52683 lw a3,12(a0) +80000344: 281011d3 fmax.s ft3,ft0,ft1 +80000348: e0018553 fmv.x.w a0,ft3 +8000034c: 001015f3 fsflags a1,zero +80000350: 00000613 li a2,0 +80000354: 1ed51063 bne a0,a3,80000534 +80000358: 1cc59e63 bne a1,a2,80000534 + +8000035c : +8000035c: 00f00193 li gp,15 +80000360: 00002517 auipc a0,0x2 +80000364: d3050513 addi a0,a0,-720 # 80002090 +80000368: 00052007 flw ft0,0(a0) +8000036c: 00452087 flw ft1,4(a0) +80000370: 00852107 flw ft2,8(a0) +80000374: 00c52683 lw a3,12(a0) +80000378: 281011d3 fmax.s ft3,ft0,ft1 +8000037c: e0018553 fmv.x.w a0,ft3 +80000380: 001015f3 fsflags a1,zero +80000384: 00000613 li a2,0 +80000388: 1ad51663 bne a0,a3,80000534 +8000038c: 1ac59463 bne a1,a2,80000534 + +80000390 : +80000390: 01000193 li gp,16 +80000394: 00002517 auipc a0,0x2 +80000398: d0c50513 addi a0,a0,-756 # 800020a0 +8000039c: 00052007 flw ft0,0(a0) +800003a0: 00452087 flw ft1,4(a0) +800003a4: 00852107 flw ft2,8(a0) +800003a8: 00c52683 lw a3,12(a0) +800003ac: 281011d3 fmax.s ft3,ft0,ft1 +800003b0: e0018553 fmv.x.w a0,ft3 +800003b4: 001015f3 fsflags a1,zero +800003b8: 00000613 li a2,0 +800003bc: 16d51c63 bne a0,a3,80000534 +800003c0: 16c59a63 bne a1,a2,80000534 + +800003c4 : +800003c4: 01100193 li gp,17 +800003c8: 00002517 auipc a0,0x2 +800003cc: ce850513 addi a0,a0,-792 # 800020b0 +800003d0: 00052007 flw ft0,0(a0) +800003d4: 00452087 flw ft1,4(a0) +800003d8: 00852107 flw ft2,8(a0) +800003dc: 00c52683 lw a3,12(a0) +800003e0: 281011d3 fmax.s ft3,ft0,ft1 +800003e4: e0018553 fmv.x.w a0,ft3 +800003e8: 001015f3 fsflags a1,zero +800003ec: 00000613 li a2,0 +800003f0: 14d51263 bne a0,a3,80000534 +800003f4: 14c59063 bne a1,a2,80000534 + +800003f8 : +800003f8: 01400193 li gp,20 +800003fc: 00002517 auipc a0,0x2 +80000400: cc450513 addi a0,a0,-828 # 800020c0 +80000404: 00052007 flw ft0,0(a0) +80000408: 00452087 flw ft1,4(a0) +8000040c: 00852107 flw ft2,8(a0) +80000410: 00c52683 lw a3,12(a0) +80000414: 281011d3 fmax.s ft3,ft0,ft1 +80000418: e0018553 fmv.x.w a0,ft3 +8000041c: 001015f3 fsflags a1,zero +80000420: 01000613 li a2,16 +80000424: 10d51863 bne a0,a3,80000534 +80000428: 10c59663 bne a1,a2,80000534 + +8000042c : +8000042c: 01500193 li gp,21 +80000430: 00002517 auipc a0,0x2 +80000434: ca050513 addi a0,a0,-864 # 800020d0 +80000438: 00052007 flw ft0,0(a0) +8000043c: 00452087 flw ft1,4(a0) +80000440: 00852107 flw ft2,8(a0) +80000444: 00c52683 lw a3,12(a0) +80000448: 281011d3 fmax.s ft3,ft0,ft1 +8000044c: e0018553 fmv.x.w a0,ft3 +80000450: 001015f3 fsflags a1,zero +80000454: 00000613 li a2,0 +80000458: 0cd51e63 bne a0,a3,80000534 +8000045c: 0cc59c63 bne a1,a2,80000534 + +80000460 : +80000460: 01e00193 li gp,30 +80000464: 00002517 auipc a0,0x2 +80000468: c7c50513 addi a0,a0,-900 # 800020e0 +8000046c: 00052007 flw ft0,0(a0) +80000470: 00452087 flw ft1,4(a0) +80000474: 00852107 flw ft2,8(a0) +80000478: 00c52683 lw a3,12(a0) +8000047c: 281001d3 fmin.s ft3,ft0,ft1 +80000480: e0018553 fmv.x.w a0,ft3 +80000484: 001015f3 fsflags a1,zero +80000488: 00000613 li a2,0 +8000048c: 0ad51463 bne a0,a3,80000534 +80000490: 0ac59263 bne a1,a2,80000534 + +80000494 : +80000494: 01f00193 li gp,31 +80000498: 00002517 auipc a0,0x2 +8000049c: c5850513 addi a0,a0,-936 # 800020f0 +800004a0: 00052007 flw ft0,0(a0) +800004a4: 00452087 flw ft1,4(a0) +800004a8: 00852107 flw ft2,8(a0) +800004ac: 00c52683 lw a3,12(a0) +800004b0: 281001d3 fmin.s ft3,ft0,ft1 +800004b4: e0018553 fmv.x.w a0,ft3 +800004b8: 001015f3 fsflags a1,zero +800004bc: 00000613 li a2,0 +800004c0: 06d51a63 bne a0,a3,80000534 +800004c4: 06c59863 bne a1,a2,80000534 + +800004c8 : +800004c8: 02000193 li gp,32 +800004cc: 00002517 auipc a0,0x2 +800004d0: c3450513 addi a0,a0,-972 # 80002100 +800004d4: 00052007 flw ft0,0(a0) +800004d8: 00452087 flw ft1,4(a0) +800004dc: 00852107 flw ft2,8(a0) +800004e0: 00c52683 lw a3,12(a0) +800004e4: 281011d3 fmax.s ft3,ft0,ft1 +800004e8: e0018553 fmv.x.w a0,ft3 +800004ec: 001015f3 fsflags a1,zero +800004f0: 00000613 li a2,0 +800004f4: 04d51063 bne a0,a3,80000534 +800004f8: 02c59e63 bne a1,a2,80000534 + +800004fc : +800004fc: 02100193 li gp,33 +80000500: 00002517 auipc a0,0x2 +80000504: c1050513 addi a0,a0,-1008 # 80002110 +80000508: 00052007 flw ft0,0(a0) +8000050c: 00452087 flw ft1,4(a0) +80000510: 00852107 flw ft2,8(a0) +80000514: 00c52683 lw a3,12(a0) +80000518: 281011d3 fmax.s ft3,ft0,ft1 +8000051c: e0018553 fmv.x.w a0,ft3 +80000520: 001015f3 fsflags a1,zero +80000524: 00000613 li a2,0 +80000528: 00d51663 bne a0,a3,80000534 +8000052c: 00c59463 bne a1,a2,80000534 +80000530: 02301063 bne zero,gp,80000550 + +80000534 : +80000534: 0ff0000f fence +80000538: 00018063 beqz gp,80000538 +8000053c: 00119193 slli gp,gp,0x1 +80000540: 0011e193 ori gp,gp,1 +80000544: 05d00893 li a7,93 +80000548: 00018513 mv a0,gp +8000054c: 00000073 ecall + +80000550 : +80000550: 0ff0000f fence +80000554: 00100193 li gp,1 +80000558: 05d00893 li a7,93 +8000055c: 00000513 li a0,0 +80000560: 00000073 ecall +80000564: c0001073 unimp +80000568: 0000 unimp +8000056a: 0000 unimp +8000056c: 0000 unimp +8000056e: 0000 unimp +80000570: 0000 unimp +80000572: 0000 unimp +80000574: 0000 unimp +80000576: 0000 unimp +80000578: 0000 unimp +8000057a: 0000 unimp +8000057c: 0000 unimp +8000057e: 0000 unimp +80000580: 0000 unimp +80000582: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: 4020 lw s0,64(s0) +80002004: 0000 unimp +80002006: 3f80 fld fs0,56(a5) +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 3f80 fld fs0,56(a5) + +80002010 : +80002010: c49a6333 0xc49a6333 +80002014: cccd beqz s1,800020ce +80002016: 3f8c fld fa1,56(a5) +80002018: 0000 unimp +8000201a: 0000 unimp +8000201c: c49a6333 0xc49a6333 + +80002020 : +80002020: cccd beqz s1,800020da +80002022: 3f8c fld fa1,56(a5) +80002024: c49a6333 0xc49a6333 +80002028: 0000 unimp +8000202a: 0000 unimp +8000202c: c49a6333 0xc49a6333 + +80002030 : +80002030: ffff 0xffff +80002032: 7fff 0x7fff +80002034: c49a6333 0xc49a6333 +80002038: 0000 unimp +8000203a: 0000 unimp +8000203c: c49a6333 0xc49a6333 + +80002040 : +80002040: 40490fdb 0x40490fdb +80002044: 322bcc77 0x322bcc77 +80002048: 0000 unimp +8000204a: 0000 unimp +8000204c: 322bcc77 0x322bcc77 + +80002050 : +80002050: 0000 unimp +80002052: bf80 fsd fs0,56(a5) +80002054: 0000 unimp +80002056: c000 sw s0,0(s0) +80002058: 0000 unimp +8000205a: 0000 unimp +8000205c: 0000 unimp +8000205e: c000 sw s0,0(s0) + +80002060 : +80002060: 0000 unimp +80002062: 4020 lw s0,64(s0) +80002064: 0000 unimp +80002066: 3f80 fld fs0,56(a5) +80002068: 0000 unimp +8000206a: 0000 unimp +8000206c: 0000 unimp +8000206e: 4020 lw s0,64(s0) + +80002070 : +80002070: c49a6333 0xc49a6333 +80002074: cccd beqz s1,8000212e <_end+0xe> +80002076: 3f8c fld fa1,56(a5) +80002078: 0000 unimp +8000207a: 0000 unimp +8000207c: cccd beqz s1,80002136 <_end+0x16> +8000207e: 3f8c fld fa1,56(a5) + +80002080 : +80002080: cccd beqz s1,8000213a <_end+0x1a> +80002082: 3f8c fld fa1,56(a5) +80002084: c49a6333 0xc49a6333 +80002088: 0000 unimp +8000208a: 0000 unimp +8000208c: cccd beqz s1,80002146 <_end+0x26> +8000208e: 3f8c fld fa1,56(a5) + +80002090 : +80002090: ffff 0xffff +80002092: 7fff 0x7fff +80002094: c49a6333 0xc49a6333 +80002098: 0000 unimp +8000209a: 0000 unimp +8000209c: c49a6333 0xc49a6333 + +800020a0 : +800020a0: 40490fdb 0x40490fdb +800020a4: 322bcc77 0x322bcc77 +800020a8: 0000 unimp +800020aa: 0000 unimp +800020ac: 40490fdb 0x40490fdb + +800020b0 : +800020b0: 0000 unimp +800020b2: bf80 fsd fs0,56(a5) +800020b4: 0000 unimp +800020b6: c000 sw s0,0(s0) +800020b8: 0000 unimp +800020ba: 0000 unimp +800020bc: 0000 unimp +800020be: bf80 fsd fs0,56(a5) + +800020c0 : +800020c0: 0001 nop +800020c2: 7f80 flw fs0,56(a5) +800020c4: 0000 unimp +800020c6: 3f80 fld fs0,56(a5) +800020c8: 0000 unimp +800020ca: 0000 unimp +800020cc: 0000 unimp +800020ce: 3f80 fld fs0,56(a5) + +800020d0 : +800020d0: ffff 0xffff +800020d2: 7fff 0x7fff +800020d4: ffff 0xffff +800020d6: 7fff 0x7fff +800020d8: 0000 unimp +800020da: 0000 unimp +800020dc: 0000 unimp +800020de: 7fc0 flw fs0,60(a5) + +800020e0 : +800020e0: 0000 unimp +800020e2: 8000 0x8000 +800020e4: 0000 unimp +800020e6: 0000 unimp +800020e8: 0000 unimp +800020ea: 0000 unimp +800020ec: 0000 unimp +800020ee: 8000 0x8000 + +800020f0 : +800020f0: 0000 unimp +800020f2: 0000 unimp +800020f4: 0000 unimp +800020f6: 8000 0x8000 +800020f8: 0000 unimp +800020fa: 0000 unimp +800020fc: 0000 unimp +800020fe: 8000 0x8000 + +80002100 : +80002100: 0000 unimp +80002102: 8000 0x8000 +80002104: 0000 unimp +80002106: 0000 unimp +80002108: 0000 unimp +8000210a: 0000 unimp +8000210c: 0000 unimp +8000210e: 0000 unimp + +80002110 : +80002110: 0000 unimp +80002112: 0000 unimp +80002114: 0000 unimp +80002116: 8000 0x8000 +80002118: 0000 unimp +8000211a: 0000 unimp +8000211c: 0000 unimp +8000211e: 0000 unimp diff --git a/src/test/resources/asm/rv32uf-p-ldst.dump b/src/test/resources/asm/rv32uf-p-ldst.dump new file mode 100644 index 0000000..7550b73 --- /dev/null +++ b/src/test/resources/asm/rv32uf-p-ldst.dump @@ -0,0 +1,172 @@ + +rv32uf-p-ldst: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: 00000093 li ra,0 +80000050: 00000113 li sp,0 +80000054: 00000193 li gp,0 +80000058: 00000213 li tp,0 +8000005c: 00000293 li t0,0 +80000060: 00000313 li t1,0 +80000064: 00000393 li t2,0 +80000068: 00000413 li s0,0 +8000006c: 00000493 li s1,0 +80000070: 00000513 li a0,0 +80000074: 00000593 li a1,0 +80000078: 00000613 li a2,0 +8000007c: 00000693 li a3,0 +80000080: 00000713 li a4,0 +80000084: 00000793 li a5,0 +80000088: 00000813 li a6,0 +8000008c: 00000893 li a7,0 +80000090: 00000913 li s2,0 +80000094: 00000993 li s3,0 +80000098: 00000a13 li s4,0 +8000009c: 00000a93 li s5,0 +800000a0: 00000b13 li s6,0 +800000a4: 00000b93 li s7,0 +800000a8: 00000c13 li s8,0 +800000ac: 00000c93 li s9,0 +800000b0: 00000d13 li s10,0 +800000b4: 00000d93 li s11,0 +800000b8: 00000e13 li t3,0 +800000bc: 00000e93 li t4,0 +800000c0: 00000f13 li t5,0 +800000c4: 00000f93 li t6,0 +800000c8: f1402573 csrr a0,mhartid +800000cc: 00051063 bnez a0,800000cc +800000d0: 00000297 auipc t0,0x0 +800000d4: 01028293 addi t0,t0,16 # 800000e0 +800000d8: 30529073 csrw mtvec,t0 +800000dc: 18005073 csrwi satp,0 +800000e0: 00000297 auipc t0,0x0 +800000e4: 02028293 addi t0,t0,32 # 80000100 +800000e8: 30529073 csrw mtvec,t0 +800000ec: 800002b7 lui t0,0x80000 +800000f0: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfdf> +800000f4: 3b029073 csrw pmpaddr0,t0 +800000f8: 01f00293 li t0,31 +800000fc: 3a029073 csrw pmpcfg0,t0 +80000100: 30405073 csrwi mie,0 +80000104: 00000297 auipc t0,0x0 +80000108: 01428293 addi t0,t0,20 # 80000118 +8000010c: 30529073 csrw mtvec,t0 +80000110: 30205073 csrwi medeleg,0 +80000114: 30305073 csrwi mideleg,0 +80000118: 00000193 li gp,0 +8000011c: 00000297 auipc t0,0x0 +80000120: ee828293 addi t0,t0,-280 # 80000004 +80000124: 30529073 csrw mtvec,t0 +80000128: 00100513 li a0,1 +8000012c: 01f51513 slli a0,a0,0x1f +80000130: 00054c63 bltz a0,80000148 +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 05d00893 li a7,93 +80000140: 00000513 li a0,0 +80000144: 00000073 ecall +80000148: 80000297 auipc t0,0x80000 +8000014c: eb828293 addi t0,t0,-328 # 0 <_start-0x80000000> +80000150: 00028a63 beqz t0,80000164 +80000154: 10529073 csrw stvec,t0 +80000158: 0000b2b7 lui t0,0xb +8000015c: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +80000160: 30229073 csrw medeleg,t0 +80000164: 30005073 csrwi mstatus,0 +80000168: 00002537 lui a0,0x2 +8000016c: 30052073 csrs mstatus,a0 +80000170: 00305073 csrwi fcsr,0 +80000174: 00000297 auipc t0,0x0 +80000178: 01428293 addi t0,t0,20 # 80000188 +8000017c: 34129073 csrw mepc,t0 +80000180: f1402573 csrr a0,mhartid +80000184: 30200073 mret + +80000188 : +80000188: 00002597 auipc a1,0x2 +8000018c: e7858593 addi a1,a1,-392 # 80002000 +80000190: 0045a087 flw ft1,4(a1) +80000194: 0015aa27 fsw ft1,20(a1) +80000198: 0145a503 lw a0,20(a1) +8000019c: 400003b7 lui t2,0x40000 +800001a0: 00200193 li gp,2 +800001a4: 02751463 bne a0,t2,800001cc + +800001a8 : +800001a8: 00002597 auipc a1,0x2 +800001ac: e5858593 addi a1,a1,-424 # 80002000 +800001b0: 0005a087 flw ft1,0(a1) +800001b4: 0015ac27 fsw ft1,24(a1) +800001b8: 0185a503 lw a0,24(a1) +800001bc: bf8003b7 lui t2,0xbf800 +800001c0: 00300193 li gp,3 +800001c4: 00751463 bne a0,t2,800001cc +800001c8: 02301063 bne zero,gp,800001e8 + +800001cc : +800001cc: 0ff0000f fence +800001d0: 00018063 beqz gp,800001d0 +800001d4: 00119193 slli gp,gp,0x1 +800001d8: 0011e193 ori gp,gp,1 +800001dc: 05d00893 li a7,93 +800001e0: 00018513 mv a0,gp +800001e4: 00000073 ecall + +800001e8 : +800001e8: 0ff0000f fence +800001ec: 00100193 li gp,1 +800001f0: 05d00893 li a7,93 +800001f4: 00000513 li a0,0 +800001f8: 00000073 ecall +800001fc: c0001073 unimp +80000200: 0000 unimp +80000202: 0000 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: bf80 fsd fs0,56(a5) +80002004: 0000 unimp +80002006: 4000 lw s0,0(s0) +80002008: 0000 unimp +8000200a: 4040 lw s0,4(s0) +8000200c: 0000 unimp +8000200e: c080 sw s0,0(s1) +80002010: deadbeef jal t4,7ffdd5fa <_start-0x22a06> +80002014: babe fsd fa5,368(sp) +80002016: cafe sw t6,84(sp) +80002018: 1dea slli s11,s11,0x3a +8000201a: abad j 80002594 <_end+0x574> +8000201c: d00d beqz s0,80001f3e +8000201e: lui t1,0x1 diff --git a/src/test/resources/asm/rv32uf-p-move.dump b/src/test/resources/asm/rv32uf-p-move.dump new file mode 100644 index 0000000..045df28 --- /dev/null +++ b/src/test/resources/asm/rv32uf-p-move.dump @@ -0,0 +1,360 @@ + +rv32uf-p-move: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: 00000093 li ra,0 +80000050: 00000113 li sp,0 +80000054: 00000193 li gp,0 +80000058: 00000213 li tp,0 +8000005c: 00000293 li t0,0 +80000060: 00000313 li t1,0 +80000064: 00000393 li t2,0 +80000068: 00000413 li s0,0 +8000006c: 00000493 li s1,0 +80000070: 00000513 li a0,0 +80000074: 00000593 li a1,0 +80000078: 00000613 li a2,0 +8000007c: 00000693 li a3,0 +80000080: 00000713 li a4,0 +80000084: 00000793 li a5,0 +80000088: 00000813 li a6,0 +8000008c: 00000893 li a7,0 +80000090: 00000913 li s2,0 +80000094: 00000993 li s3,0 +80000098: 00000a13 li s4,0 +8000009c: 00000a93 li s5,0 +800000a0: 00000b13 li s6,0 +800000a4: 00000b93 li s7,0 +800000a8: 00000c13 li s8,0 +800000ac: 00000c93 li s9,0 +800000b0: 00000d13 li s10,0 +800000b4: 00000d93 li s11,0 +800000b8: 00000e13 li t3,0 +800000bc: 00000e93 li t4,0 +800000c0: 00000f13 li t5,0 +800000c4: 00000f93 li t6,0 +800000c8: f1402573 csrr a0,mhartid +800000cc: 00051063 bnez a0,800000cc +800000d0: 00000297 auipc t0,0x0 +800000d4: 01028293 addi t0,t0,16 # 800000e0 +800000d8: 30529073 csrw mtvec,t0 +800000dc: 18005073 csrwi satp,0 +800000e0: 00000297 auipc t0,0x0 +800000e4: 02028293 addi t0,t0,32 # 80000100 +800000e8: 30529073 csrw mtvec,t0 +800000ec: 800002b7 lui t0,0x80000 +800000f0: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfff> +800000f4: 3b029073 csrw pmpaddr0,t0 +800000f8: 01f00293 li t0,31 +800000fc: 3a029073 csrw pmpcfg0,t0 +80000100: 30405073 csrwi mie,0 +80000104: 00000297 auipc t0,0x0 +80000108: 01428293 addi t0,t0,20 # 80000118 +8000010c: 30529073 csrw mtvec,t0 +80000110: 30205073 csrwi medeleg,0 +80000114: 30305073 csrwi mideleg,0 +80000118: 00000193 li gp,0 +8000011c: 00000297 auipc t0,0x0 +80000120: ee828293 addi t0,t0,-280 # 80000004 +80000124: 30529073 csrw mtvec,t0 +80000128: 00100513 li a0,1 +8000012c: 01f51513 slli a0,a0,0x1f +80000130: 00054c63 bltz a0,80000148 +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 05d00893 li a7,93 +80000140: 00000513 li a0,0 +80000144: 00000073 ecall +80000148: 80000297 auipc t0,0x80000 +8000014c: eb828293 addi t0,t0,-328 # 0 <_start-0x80000000> +80000150: 00028a63 beqz t0,80000164 +80000154: 10529073 csrw stvec,t0 +80000158: 0000b2b7 lui t0,0xb +8000015c: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +80000160: 30229073 csrw medeleg,t0 +80000164: 30005073 csrwi mstatus,0 +80000168: 00002537 lui a0,0x2 +8000016c: 30052073 csrs mstatus,a0 +80000170: 00305073 csrwi fcsr,0 +80000174: 00000297 auipc t0,0x0 +80000178: 01428293 addi t0,t0,20 # 80000188 +8000017c: 34129073 csrw mepc,t0 +80000180: f1402573 csrr a0,mhartid +80000184: 30200073 mret + +80000188 : +80000188: 0030d073 csrwi fcsr,1 +8000018c: 00001537 lui a0,0x1 +80000190: 23450513 addi a0,a0,564 # 1234 <_start-0x7fffedcc> +80000194: 003515f3 fscsr a1,a0 +80000198: 00100393 li t2,1 +8000019c: 00200193 li gp,2 +800001a0: 26759c63 bne a1,t2,80000418 + +800001a4 : +800001a4: 00302573 frcsr a0 +800001a8: 03400393 li t2,52 +800001ac: 00300193 li gp,3 +800001b0: 26751463 bne a0,t2,80000418 + +800001b4 : +800001b4: 00102573 frflags a0 +800001b8: 01400393 li t2,20 +800001bc: 00400193 li gp,4 +800001c0: 24751c63 bne a0,t2,80000418 + +800001c4 : +800001c4: 00215573 fsrmi a0,2 +800001c8: 00100393 li t2,1 +800001cc: 00500193 li gp,5 +800001d0: 24751463 bne a0,t2,80000418 + +800001d4 : +800001d4: 00302573 frcsr a0 +800001d8: 05400393 li t2,84 +800001dc: 00600193 li gp,6 +800001e0: 22751c63 bne a0,t2,80000418 + +800001e4 : +800001e4: 00127573 csrrci a0,fflags,4 +800001e8: 01400393 li t2,20 +800001ec: 00700193 li gp,7 +800001f0: 22751463 bne a0,t2,80000418 + +800001f4 : +800001f4: 00302573 frcsr a0 +800001f8: 05000393 li t2,80 +800001fc: 00800193 li gp,8 +80000200: 20751c63 bne a0,t2,80000418 + +80000204 : +80000204: 123455b7 lui a1,0x12345 +80000208: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +8000020c: 00000613 li a2,0 +80000210: f00580d3 fmv.w.x ft1,a1 +80000214: f0060153 fmv.w.x ft2,a2 +80000218: 20208053 fsgnj.s ft0,ft1,ft2 +8000021c: e0000553 fmv.x.w a0,ft0 +80000220: 123453b7 lui t2,0x12345 +80000224: 67838393 addi t2,t2,1656 # 12345678 <_start-0x6dcba988> +80000228: 00a00193 li gp,10 +8000022c: 1e751663 bne a0,t2,80000418 + +80000230 : +80000230: 123455b7 lui a1,0x12345 +80000234: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +80000238: fff00613 li a2,-1 +8000023c: f00580d3 fmv.w.x ft1,a1 +80000240: f0060153 fmv.w.x ft2,a2 +80000244: 20208053 fsgnj.s ft0,ft1,ft2 +80000248: e0000553 fmv.x.w a0,ft0 +8000024c: 923453b7 lui t2,0x92345 +80000250: 67838393 addi t2,t2,1656 # 92345678 <_end+0x12343678> +80000254: 00b00193 li gp,11 +80000258: 1c751063 bne a0,t2,80000418 + +8000025c : +8000025c: 923455b7 lui a1,0x92345 +80000260: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +80000264: 00000613 li a2,0 +80000268: f00580d3 fmv.w.x ft1,a1 +8000026c: f0060153 fmv.w.x ft2,a2 +80000270: 20208053 fsgnj.s ft0,ft1,ft2 +80000274: e0000553 fmv.x.w a0,ft0 +80000278: 123453b7 lui t2,0x12345 +8000027c: 67838393 addi t2,t2,1656 # 12345678 <_start-0x6dcba988> +80000280: 00c00193 li gp,12 +80000284: 18751a63 bne a0,t2,80000418 + +80000288 : +80000288: 923455b7 lui a1,0x92345 +8000028c: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +80000290: fff00613 li a2,-1 +80000294: f00580d3 fmv.w.x ft1,a1 +80000298: f0060153 fmv.w.x ft2,a2 +8000029c: 20208053 fsgnj.s ft0,ft1,ft2 +800002a0: e0000553 fmv.x.w a0,ft0 +800002a4: 923453b7 lui t2,0x92345 +800002a8: 67838393 addi t2,t2,1656 # 92345678 <_end+0x12343678> +800002ac: 00d00193 li gp,13 +800002b0: 16751463 bne a0,t2,80000418 + +800002b4 : +800002b4: 123455b7 lui a1,0x12345 +800002b8: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +800002bc: 00000613 li a2,0 +800002c0: f00580d3 fmv.w.x ft1,a1 +800002c4: f0060153 fmv.w.x ft2,a2 +800002c8: 20209053 fsgnjn.s ft0,ft1,ft2 +800002cc: e0000553 fmv.x.w a0,ft0 +800002d0: 923453b7 lui t2,0x92345 +800002d4: 67838393 addi t2,t2,1656 # 92345678 <_end+0x12343678> +800002d8: 01400193 li gp,20 +800002dc: 12751e63 bne a0,t2,80000418 + +800002e0 : +800002e0: 123455b7 lui a1,0x12345 +800002e4: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +800002e8: fff00613 li a2,-1 +800002ec: f00580d3 fmv.w.x ft1,a1 +800002f0: f0060153 fmv.w.x ft2,a2 +800002f4: 20209053 fsgnjn.s ft0,ft1,ft2 +800002f8: e0000553 fmv.x.w a0,ft0 +800002fc: 123453b7 lui t2,0x12345 +80000300: 67838393 addi t2,t2,1656 # 12345678 <_start-0x6dcba988> +80000304: 01500193 li gp,21 +80000308: 10751863 bne a0,t2,80000418 + +8000030c : +8000030c: 923455b7 lui a1,0x92345 +80000310: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +80000314: 00000613 li a2,0 +80000318: f00580d3 fmv.w.x ft1,a1 +8000031c: f0060153 fmv.w.x ft2,a2 +80000320: 20209053 fsgnjn.s ft0,ft1,ft2 +80000324: e0000553 fmv.x.w a0,ft0 +80000328: 923453b7 lui t2,0x92345 +8000032c: 67838393 addi t2,t2,1656 # 92345678 <_end+0x12343678> +80000330: 01600193 li gp,22 +80000334: 0e751263 bne a0,t2,80000418 + +80000338 : +80000338: 923455b7 lui a1,0x92345 +8000033c: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +80000340: fff00613 li a2,-1 +80000344: f00580d3 fmv.w.x ft1,a1 +80000348: f0060153 fmv.w.x ft2,a2 +8000034c: 20209053 fsgnjn.s ft0,ft1,ft2 +80000350: e0000553 fmv.x.w a0,ft0 +80000354: 123453b7 lui t2,0x12345 +80000358: 67838393 addi t2,t2,1656 # 12345678 <_start-0x6dcba988> +8000035c: 01700193 li gp,23 +80000360: 0a751c63 bne a0,t2,80000418 + +80000364 : +80000364: 123455b7 lui a1,0x12345 +80000368: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +8000036c: 00000613 li a2,0 +80000370: f00580d3 fmv.w.x ft1,a1 +80000374: f0060153 fmv.w.x ft2,a2 +80000378: 2020a053 fsgnjx.s ft0,ft1,ft2 +8000037c: e0000553 fmv.x.w a0,ft0 +80000380: 123453b7 lui t2,0x12345 +80000384: 67838393 addi t2,t2,1656 # 12345678 <_start-0x6dcba988> +80000388: 01e00193 li gp,30 +8000038c: 08751663 bne a0,t2,80000418 + +80000390 : +80000390: 123455b7 lui a1,0x12345 +80000394: 67858593 addi a1,a1,1656 # 12345678 <_start-0x6dcba988> +80000398: fff00613 li a2,-1 +8000039c: f00580d3 fmv.w.x ft1,a1 +800003a0: f0060153 fmv.w.x ft2,a2 +800003a4: 2020a053 fsgnjx.s ft0,ft1,ft2 +800003a8: e0000553 fmv.x.w a0,ft0 +800003ac: 923453b7 lui t2,0x92345 +800003b0: 67838393 addi t2,t2,1656 # 92345678 <_end+0x12343678> +800003b4: 01f00193 li gp,31 +800003b8: 06751063 bne a0,t2,80000418 + +800003bc : +800003bc: 923455b7 lui a1,0x92345 +800003c0: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +800003c4: 00000613 li a2,0 +800003c8: f00580d3 fmv.w.x ft1,a1 +800003cc: f0060153 fmv.w.x ft2,a2 +800003d0: 2020a053 fsgnjx.s ft0,ft1,ft2 +800003d4: e0000553 fmv.x.w a0,ft0 +800003d8: 923453b7 lui t2,0x92345 +800003dc: 67838393 addi t2,t2,1656 # 92345678 <_end+0x12343678> +800003e0: 02000193 li gp,32 +800003e4: 02751a63 bne a0,t2,80000418 + +800003e8 : +800003e8: 923455b7 lui a1,0x92345 +800003ec: 67858593 addi a1,a1,1656 # 92345678 <_end+0x12343678> +800003f0: fff00613 li a2,-1 +800003f4: f00580d3 fmv.w.x ft1,a1 +800003f8: f0060153 fmv.w.x ft2,a2 +800003fc: 2020a053 fsgnjx.s ft0,ft1,ft2 +80000400: e0000553 fmv.x.w a0,ft0 +80000404: 123453b7 lui t2,0x12345 +80000408: 67838393 addi t2,t2,1656 # 12345678 <_start-0x6dcba988> +8000040c: 02100193 li gp,33 +80000410: 00751463 bne a0,t2,80000418 +80000414: 02301063 bne zero,gp,80000434 + +80000418 : +80000418: 0ff0000f fence +8000041c: 00018063 beqz gp,8000041c +80000420: 00119193 slli gp,gp,0x1 +80000424: 0011e193 ori gp,gp,1 +80000428: 05d00893 li a7,93 +8000042c: 00018513 mv a0,gp +80000430: 00000073 ecall + +80000434 : +80000434: 0ff0000f fence +80000438: 00100193 li gp,1 +8000043c: 05d00893 li a7,93 +80000440: 00000513 li a0,0 +80000444: 00000073 ecall +80000448: c0001073 unimp +8000044c: 0000 unimp +8000044e: 0000 unimp +80000450: 0000 unimp +80000452: 0000 unimp +80000454: 0000 unimp +80000456: 0000 unimp +80000458: 0000 unimp +8000045a: 0000 unimp +8000045c: 0000 unimp +8000045e: 0000 unimp +80000460: 0000 unimp +80000462: 0000 unimp +80000464: 0000 unimp +80000466: 0000 unimp +80000468: 0000 unimp +8000046a: 0000 unimp +8000046c: 0000 unimp +8000046e: 0000 unimp +80000470: 0000 unimp +80000472: 0000 unimp +80000474: 0000 unimp +80000476: 0000 unimp +80000478: 0000 unimp +8000047a: 0000 unimp +8000047c: 0000 unimp +8000047e: 0000 unimp +80000480: 0000 unimp +80000482: 0000 unimp diff --git a/src/test/resources/asm/rv32uf-p-recoding.dump b/src/test/resources/asm/rv32uf-p-recoding.dump new file mode 100644 index 0000000..12d0f41 --- /dev/null +++ b/src/test/resources/asm/rv32uf-p-recoding.dump @@ -0,0 +1,190 @@ + +rv32uf-p-recoding: file format elf32-littleriscv + + +Disassembly of section .text.init: + +80000000 <_start>: +80000000: 04c0006f j 8000004c + +80000004 : +80000004: 34202f73 csrr t5,mcause +80000008: 00800f93 li t6,8 +8000000c: 03ff0a63 beq t5,t6,80000040 +80000010: 00900f93 li t6,9 +80000014: 03ff0663 beq t5,t6,80000040 +80000018: 00b00f93 li t6,11 +8000001c: 03ff0263 beq t5,t6,80000040 +80000020: 80000f17 auipc t5,0x80000 +80000024: fe0f0f13 addi t5,t5,-32 # 0 <_start-0x80000000> +80000028: 000f0463 beqz t5,80000030 +8000002c: 000f0067 jr t5 +80000030: 34202f73 csrr t5,mcause +80000034: 000f5463 bgez t5,8000003c +80000038: 0040006f j 8000003c + +8000003c : +8000003c: 5391e193 ori gp,gp,1337 + +80000040 : +80000040: 00001f17 auipc t5,0x1 +80000044: fc3f2023 sw gp,-64(t5) # 80001000 +80000048: ff9ff06f j 80000040 + +8000004c : +8000004c: 00000093 li ra,0 +80000050: 00000113 li sp,0 +80000054: 00000193 li gp,0 +80000058: 00000213 li tp,0 +8000005c: 00000293 li t0,0 +80000060: 00000313 li t1,0 +80000064: 00000393 li t2,0 +80000068: 00000413 li s0,0 +8000006c: 00000493 li s1,0 +80000070: 00000513 li a0,0 +80000074: 00000593 li a1,0 +80000078: 00000613 li a2,0 +8000007c: 00000693 li a3,0 +80000080: 00000713 li a4,0 +80000084: 00000793 li a5,0 +80000088: 00000813 li a6,0 +8000008c: 00000893 li a7,0 +80000090: 00000913 li s2,0 +80000094: 00000993 li s3,0 +80000098: 00000a13 li s4,0 +8000009c: 00000a93 li s5,0 +800000a0: 00000b13 li s6,0 +800000a4: 00000b93 li s7,0 +800000a8: 00000c13 li s8,0 +800000ac: 00000c93 li s9,0 +800000b0: 00000d13 li s10,0 +800000b4: 00000d93 li s11,0 +800000b8: 00000e13 li t3,0 +800000bc: 00000e93 li t4,0 +800000c0: 00000f13 li t5,0 +800000c4: 00000f93 li t6,0 +800000c8: f1402573 csrr a0,mhartid +800000cc: 00051063 bnez a0,800000cc +800000d0: 00000297 auipc t0,0x0 +800000d4: 01028293 addi t0,t0,16 # 800000e0 +800000d8: 30529073 csrw mtvec,t0 +800000dc: 18005073 csrwi satp,0 +800000e0: 00000297 auipc t0,0x0 +800000e4: 02028293 addi t0,t0,32 # 80000100 +800000e8: 30529073 csrw mtvec,t0 +800000ec: 800002b7 lui t0,0x80000 +800000f0: fff28293 addi t0,t0,-1 # 7fffffff <_end+0xffffdfef> +800000f4: 3b029073 csrw pmpaddr0,t0 +800000f8: 01f00293 li t0,31 +800000fc: 3a029073 csrw pmpcfg0,t0 +80000100: 30405073 csrwi mie,0 +80000104: 00000297 auipc t0,0x0 +80000108: 01428293 addi t0,t0,20 # 80000118 +8000010c: 30529073 csrw mtvec,t0 +80000110: 30205073 csrwi medeleg,0 +80000114: 30305073 csrwi mideleg,0 +80000118: 00000193 li gp,0 +8000011c: 00000297 auipc t0,0x0 +80000120: ee828293 addi t0,t0,-280 # 80000004 +80000124: 30529073 csrw mtvec,t0 +80000128: 00100513 li a0,1 +8000012c: 01f51513 slli a0,a0,0x1f +80000130: 00054c63 bltz a0,80000148 +80000134: 0ff0000f fence +80000138: 00100193 li gp,1 +8000013c: 05d00893 li a7,93 +80000140: 00000513 li a0,0 +80000144: 00000073 ecall +80000148: 80000297 auipc t0,0x80000 +8000014c: eb828293 addi t0,t0,-328 # 0 <_start-0x80000000> +80000150: 00028a63 beqz t0,80000164 +80000154: 10529073 csrw stvec,t0 +80000158: 0000b2b7 lui t0,0xb +8000015c: 10928293 addi t0,t0,265 # b109 <_start-0x7fff4ef7> +80000160: 30229073 csrw medeleg,t0 +80000164: 30005073 csrwi mstatus,0 +80000168: 00002537 lui a0,0x2 +8000016c: 30052073 csrs mstatus,a0 +80000170: 00305073 csrwi fcsr,0 +80000174: 00000297 auipc t0,0x0 +80000178: 01428293 addi t0,t0,20 # 80000188 +8000017c: 34129073 csrw mepc,t0 +80000180: f1402573 csrr a0,mhartid +80000184: 30200073 mret +80000188: 00002517 auipc a0,0x2 +8000018c: e7852007 flw ft0,-392(a0) # 80002000 +80000190: 00002517 auipc a0,0x2 +80000194: e7452087 flw ft1,-396(a0) # 80002004 +80000198: 1000f0d3 fmul.s ft1,ft1,ft0 + +8000019c : +8000019c: a0102553 feq.s a0,ft0,ft1 +800001a0: 00100393 li t2,1 +800001a4: 00200193 li gp,2 +800001a8: 06751463 bne a0,t2,80000210 + +800001ac : +800001ac: a0100553 fle.s a0,ft0,ft1 +800001b0: 00100393 li t2,1 +800001b4: 00300193 li gp,3 +800001b8: 04751c63 bne a0,t2,80000210 + +800001bc : +800001bc: a0101553 flt.s a0,ft0,ft1 +800001c0: 00000393 li t2,0 +800001c4: 00400193 li gp,4 +800001c8: 04751463 bne a0,t2,80000210 +800001cc: d0007053 fcvt.s.w ft0,zero +800001d0: 00100513 li a0,1 +800001d4: d00570d3 fcvt.s.w ft1,a0 +800001d8: 1000f0d3 fmul.s ft1,ft1,ft0 + +800001dc : +800001dc: a0102553 feq.s a0,ft0,ft1 +800001e0: 00100393 li t2,1 +800001e4: 00500193 li gp,5 +800001e8: 02751463 bne a0,t2,80000210 + +800001ec : +800001ec: a0100553 fle.s a0,ft0,ft1 +800001f0: 00100393 li t2,1 +800001f4: 00600193 li gp,6 +800001f8: 00751c63 bne a0,t2,80000210 + +800001fc : +800001fc: a0101553 flt.s a0,ft0,ft1 +80000200: 00000393 li t2,0 +80000204: 00700193 li gp,7 +80000208: 00751463 bne a0,t2,80000210 +8000020c: 02301063 bne zero,gp,8000022c + +80000210 : +80000210: 0ff0000f fence +80000214: 00018063 beqz gp,80000214 +80000218: 00119193 slli gp,gp,0x1 +8000021c: 0011e193 ori gp,gp,1 +80000220: 05d00893 li a7,93 +80000224: 00018513 mv a0,gp +80000228: 00000073 ecall + +8000022c : +8000022c: 0ff0000f fence +80000230: 00100193 li gp,1 +80000234: 05d00893 li a7,93 +80000238: 00000513 li a0,0 +8000023c: 00000073 ecall +80000240: c0001073 unimp + +Disassembly of section .data: + +80002000 : +80002000: 0000 unimp +80002002: ff80 fsw fs0,56(a5) + +80002004 : +80002004: 0000 unimp +80002006: 4040 lw s0,4(s0) +80002008: 0000 unimp +8000200a: 0000 unimp +8000200c: 0000 unimp +8000200e: 0000 unimp diff --git a/src/test/resources/hex/rv32uf-p-fadd.hex b/src/test/resources/hex/rv32uf-p-fadd.hex new file mode 100755 index 0000000..f174c68 --- /dev/null +++ b/src/test/resources/hex/rv32uf-p-fadd.hex @@ -0,0 +1,83 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0080130F0FFE63040F0067000F000F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF930000006C +:10005000130100009301000013020000930200004E +:100060001303000093030000130400009304000036 +:10007000130500009305000013060000930600001E +:100080001307000093070000130800009308000006 +:100090001309000093090000130A0000930A0000EE +:1000A000130B0000930B0000130C0000930C0000D6 +:1000B000130D0000930D0000130E0000930E0000BE +:1000C000130F0000930F0000732540F1631005002B +:1000D000970200009382020173905230735000180F +:1000E000970200009382020273905230B7020080A0 +:1000F0009382F2FF7390023B9302F0017390023AF5 +:100100007350403097020000938242017390523046 +:10011000735020307350303093010000970200007C +:10012000938282EE73905230130510001315F5017F +:10013000634C05000F00F00F930110009308D005E9 +:10014000130500007300000097020080938282EB89 +:10015000638A020073905210B7B20000938292102B +:100160007390223073500030372500007320053023 +:100170007350300097020000938242017390123452 +:10018000732540F1730020309301200017250000F3 +:10019000130545E707200500872045000721850056 +:1001A0008326C500D3711000538501E0F3151000BC +:1001B000130600006310D51E639EC51C930130001A +:1001C00017250000130505E50720050087204500D9 +:1001D000072185008326C500D3711000538501E0F7 +:1001E000F3151000130610006316D51A6394C51A90 +:1001F00093014000172500001305C5E20720050004 +:1002000087204500072185008326C500D371100093 +:10021000538501E0F315100013061000631CD5167A +:10022000639AC5169301500017250000130585E059 +:100230000720050087204500072185008326C5008B +:10024000D3711008538501E0F31510001306000068 +:100250006312D5146390C514930160001725000044 +:10026000130545DE0720050087204500072185008E +:100270008326C500D3711008538501E0F3151000E3 +:10028000130610006318D5106396C5109301700013 +:1002900017250000130505DC072005008720450011 +:1002A000072185008326C500D3711008538501E01E +:1002B000F315100013061000631ED50C639CC50CCB +:1002C00093018000172500001305C5D907200500FC +:1002D00087204500072185008326C500D3711010B3 +:1002E000538501E0F3151000130600006314D50ACE +:1002F0006392C50A9301900017250000130585D766 +:100300000720050087204500072185008326C500BA +:10031000D3711010538501E0F3151000130610007F +:10032000631AD5066398C5069301A000172500003F +:10033000130545D5072005008720450007218500C6 +:100340008326C500D3711010538501E0F31510000A +:10035000130610006310D504639EC5029301B0001C +:1003600017250000130505D3072005008720450049 +:10037000072185008326C500D3711008538501E04D +:10038000F3151000130600016316D5006394C50031 +:10039000631030020F00F00F638001009391110091 +:1003A00093E111009308D00513850100730000004C +:1003B0000F00F00F930110009308D0051305000003 +:1003C00073000000731000C0000000000000000077 +:1003D000000000000000000000000000000000001D +:1003E000000000000000000000000000000000000D +:1003F00000000000000000000000000000000000FD +:0404000000000000F8 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000020400000803F000000000000604011 +:1020100033639AC4CDCC8C3F0000000000409AC4CA +:10202000DB0F494077CC2B3200000000DB0F49402A +:10203000000020400000803F000000000000C03F82 +:1020400033639AC4CDCC8CBF0000000000409AC41A +:10205000DB0F494077CC2B3200000000DB0F4940FA +:10206000000020400000803F0000000000002040F1 +:1020700033639AC4CDCC8CBF0000000085D3A94443 +:10208000DB0F494077CC2B32000000002DEE0633E9 +:102090000000807F0000807F000000000000C07F03 +:040000058000000077 +:00000001FF diff --git a/src/test/resources/hex/rv32uf-p-fclass.hex b/src/test/resources/hex/rv32uf-p-fclass.hex new file mode 100755 index 0000000..849f4aa --- /dev/null +++ b/src/test/resources/hex/rv32uf-p-fclass.hex @@ -0,0 +1,53 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0080130F0FFE63040F0067000F000F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF930000006C +:10005000130100009301000013020000930200004E +:100060001303000093030000130400009304000036 +:10007000130500009305000013060000930600001E +:100080001307000093070000130800009308000006 +:100090001309000093090000130A0000930A0000EE +:1000A000130B0000930B0000130C0000930C0000D6 +:1000B000130D0000930D0000130E0000930E0000BE +:1000C000130F0000930F0000732540F1631005002B +:1000D000970200009382020173905230735000180F +:1000E000970200009382020273905230B7020080A0 +:1000F0009382F2FF7390023B9302F0017390023AF5 +:100100007350403097020000938242017390523046 +:10011000735020307350303093010000970200007C +:10012000938282EE73905230130510001315F5017F +:10013000634C05000F00F00F930110009308D005E9 +:10014000130500007300000097020080938282EB89 +:10015000638A020073905210B7B20000938292102B +:100160007390223073500030372500007320053023 +:100170007350300097020000938242017390123452 +:10018000732540F173002030370580FF530505F0DB +:10019000531505E093031000930120006316750EBC +:1001A000370580BF530505F0531505E09303200084 +:1001B00093013000631A750C370580801305F5FF35 +:1001C000530505F0531505E09303400093014000EB +:1001D000631C750A37050080530505F0531505E0CB +:1001E00093038000930150006310750A130500000B +:1001F000530505F0531505E09303000193016000DA +:1002000063147508370580001305F5FF530505F0E5 +:10021000531505E093030002930170006316750601 +:100220003705803F530505F0531505E0930300049F +:1002300093018000631A75043705807F530505F02C +:10024000531505E09303000893019000631E7502A7 +:100250003705807F13051500530505F0531505E09C +:10026000930300109301A000631075023705C07F4F +:10027000530505F0531505E0930300209301B000EA +:1002800063147500631030020F00F00F63800100EB +:100290009391110093E111009308D005138501009B +:1002A000730000000F00F00F930110009308D005B9 +:1002B0001305000073000000731000C00000000070 +:0402C000000000003A +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/src/test/resources/hex/rv32uf-p-fcmp.hex b/src/test/resources/hex/rv32uf-p-fcmp.hex new file mode 100755 index 0000000..8ba2a82 --- /dev/null +++ b/src/test/resources/hex/rv32uf-p-fcmp.hex @@ -0,0 +1,100 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0080130F0FFE63040F0067000F000F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF930000006C +:10005000130100009301000013020000930200004E +:100060001303000093030000130400009304000036 +:10007000130500009305000013060000930600001E +:100080001307000093070000130800009308000006 +:100090001309000093090000130A0000930A0000EE +:1000A000130B0000930B0000130C0000930C0000D6 +:1000B000130D0000930D0000130E0000930E0000BE +:1000C000130F0000930F0000732540F1631005002B +:1000D000970200009382020173905230735000180F +:1000E000970200009382020273905230B7020080A0 +:1000F0009382F2FF7390023B9302F0017390023AF5 +:100100007350403097020000938242017390523046 +:10011000735020307350303093010000970200007C +:10012000938282EE73905230130510001315F5017F +:10013000634C05000F00F00F930110009308D005E9 +:10014000130500007300000097020080938282EB89 +:10015000638A020073905210B7B20000938292102B +:100160007390223073500030372500007320053023 +:100170007350300097020000938242017390123452 +:10018000732540F1730020309301200017250000F3 +:10019000130545E707200500872045000721850056 +:1001A0008326C500532510A0F31510001306000088 +:1001B0006316D52A6394C52A9301300017250000E1 +:1001C000130545E507200500872045000721850028 +:1001D0008326C500530510A0F31510001306000078 +:1001E000631ED526639CC526930140001725000099 +:1001F000130545E3072005008720450007218500FA +:100200008326C500531510A0F31510001306000037 +:100210006316D5246394C52493015000172500006C +:10022000130545E1072005008720450007218500CB +:100230008326C500532510A0F315100013060000F7 +:10024000631ED520639CC520930160001725000024 +:10025000130545DF0720050087204500072185009D +:100260008326C500530510A0F315100013060000E7 +:100270006316D51E6394C51E9301700017250000F8 +:10028000130545DD0720050087204500072185006F +:100290008326C500531510A0F315100013060000A7 +:1002A000631ED51A639CC51A9301800017250000B0 +:1002B000130545DB07200500872045000721850041 +:1002C0008326C500532510A0F31510001306000067 +:1002D0006316D5186394C518930190001725000084 +:1002E000130545D907200500872045000721850013 +:1002F0008326C500532510A0F31510001306000037 +:10030000631ED514639CC5149301A000172500003B +:10031000130545D7072005008720450007218500E4 +:100320008326C500532510A0F31510001306000105 +:100330006316D5126394C5129301B000172500000F +:10034000130545D5072005008720450007218500B6 +:100350008326C500531510A0F315100013060001E5 +:10036000631ED50E639CC50E9301C00017250000C7 +:10037000130545D307200500872045000721850088 +:100380008326C500531510A0F315100013060001B5 +:100390006316D50C6394C50C9301D000172500009B +:1003A000130545D10720050087204500072185005A +:1003B0008326C500531510A0F31510001306000185 +:1003C000631ED508639CC5089301E0001725000053 +:1003D000130545CF0720050087204500072185002C +:1003E0008326C500530510A0F31510001306000165 +:1003F0006316D5066394C5069301F0001725000027 +:10040000130545CD072005008720450007218500FD +:100410008326C500530510A0F31510001306000134 +:10042000631ED502639CC5029301000117250000DD +:10043000130545CB072005008720450007218500CF +:100440008326C500530510A0F31510001306000104 +:100450006316D5006394C500631030020F00F00FDF +:10046000638001009391110093E111009308D0057E +:1004700013850100730000000F00F00F93011000BE +:100480009308D0051305000073000000731000C02E +:10049000000000000000000000000000000000005C +:1004A000000000000000000000000000000000004C +:1004B000000000000000000000000000000000003C +:0404C0000000000038 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:102000007B14AEBF7B14AEBF0000000001000000D7 +:102010007B14AEBF7B14AEBF0000000001000000C7 +:102020007B14AEBF7B14AEBF0000000000000000B8 +:10203000295CAFBF7B14AEBF0000000000000000B1 +:10204000295CAFBF7B14AEBF0000000001000000A0 +:10205000295CAFBF7B14AEBF000000000100000090 +:10206000FFFFFF7F000000000000000000000000F4 +:10207000FFFFFF7FFFFFFF7F000000000000000068 +:102080000100807F00000000000000000000000050 +:10209000FFFFFF7F000000000000000000000000C4 +:1020A000FFFFFF7FFFFFFF7F000000000000000038 +:1020B0000100807F00000000000000000000000020 +:1020C000FFFFFF7F00000000000000000000000094 +:1020D000FFFFFF7FFFFFFF7F000000000000000008 +:1020E0000100807F000000000000000000000000F0 +:040000058000000077 +:00000001FF diff --git a/src/test/resources/hex/rv32uf-p-fcvt.hex b/src/test/resources/hex/rv32uf-p-fcvt.hex new file mode 100755 index 0000000..0190534 --- /dev/null +++ b/src/test/resources/hex/rv32uf-p-fcvt.hex @@ -0,0 +1,50 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0080130F0FFE63040F0067000F000F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF930000006C +:10005000130100009301000013020000930200004E +:100060001303000093030000130400009304000036 +:10007000130500009305000013060000930600001E +:100080001307000093070000130800009308000006 +:100090001309000093090000130A0000930A0000EE +:1000A000130B0000930B0000130C0000930C0000D6 +:1000B000130D0000930D0000130E0000930E0000BE +:1000C000130F0000930F0000732540F1631005002B +:1000D000970200009382020173905230735000180F +:1000E000970200009382020273905230B7020080A0 +:1000F0009382F2FF7390023B9302F0017390023AF5 +:100100007350403097020000938242017390523046 +:10011000735020307350303093010000970200007C +:10012000938282EE73905230130510001315F5017F +:10013000634C05000F00F00F930110009308D005E9 +:10014000130500007300000097020080938282EB89 +:10015000638A020073905210B7B20000938292102B +:100160007390223073500030372500007320053023 +:100170007350300097020000938242017390123452 +:10018000732540F1730020309301200017250000F3 +:10019000130545E78326050013052000537005D09D +:1001A00073101000530500E0631AD5069301300068 +:1001B00017250000130545E5832605001305E0FF1C +:1001C000537005D073101000530500E06318D50478 +:1001D0009301400017250000130545E38326050021 +:1001E00013052000537015D073101000530500E064 +:1001F0006316D5029301500017250000130545E151 +:10020000832605001305E0FF537015D0731010000E +:10021000530500E06314D500631030020F00F00FA7 +:10022000638001009391110093E111009308D005C0 +:1002300013850100730000000F00F00F9301100000 +:100240009308D0051305000073000000731000C070 +:10025000000000000000000000000000000000009E +:10026000000000000000000000000000000000008E +:10027000000000000000000000000000000000007E +:04028000000000007A +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:1020000000000040000000C0000000400000804FC1 +:040000058000000077 +:00000001FF diff --git a/src/test/resources/hex/rv32uf-p-fcvt_w.hex b/src/test/resources/hex/rv32uf-p-fcvt_w.hex new file mode 100755 index 0000000..f758858 --- /dev/null +++ b/src/test/resources/hex/rv32uf-p-fcvt_w.hex @@ -0,0 +1,120 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0080130F0FFE63040F0067000F000F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF930000006C +:10005000130100009301000013020000930200004E +:100060001303000093030000130400009304000036 +:10007000130500009305000013060000930600001E +:100080001307000093070000130800009308000006 +:100090001309000093090000130A0000930A0000EE +:1000A000130B0000930B0000130C0000930C0000D6 +:1000B000130D0000930D0000130E0000930E0000BE +:1000C000130F0000930F0000732540F1631005002B +:1000D000970200009382020173905230735000180F +:1000E000970200009382020273905230B7020080A0 +:1000F0009382F2FF7390023B9302F0017390023AF5 +:100100007350403097020000938242017390523046 +:10011000735020307350303093010000970200007C +:10012000938282EE73905230130510001315F5017F +:10013000634C05000F00F00F930110009308D005E9 +:10014000130500007300000097020080938282EB89 +:10015000638A020073905210B7B20000938292102B +:100160007390223073500030372500007320053023 +:100170007350300097020000938242017390123452 +:10018000732540F1730020309301200017250000F3 +:10019000130545E707200500872045000721850056 +:1001A0008326C500531500C0F31510001306100078 +:1001B0006314D53C6392C53C9301300017250000C1 +:1001C000130545E507200500872045000721850028 +:1001D0008326C500531500C0F31510001306000058 +:1001E000631CD538639AC538930140001725000079 +:1001F000130545E3072005008720450007218500FA +:100200008326C500531500C0F31510001306100017 +:100210006314D5366392C53693015000172500004C +:10022000130545E1072005008720450007218500CB +:100230008326C500531500C0F315100013061000E7 +:10024000631CD532639AC532930160001725000004 +:10025000130545DF0720050087204500072185009D +:100260008326C500531500C0F315100013060000C7 +:100270006314D5306392C5309301700017250000D8 +:10028000130545DD0720050087204500072185006F +:100290008326C500531500C0F31510001306100087 +:1002A000631CD52C639AC52C930180001725000090 +:1002B000130545DB07200500872045000721850041 +:1002C0008326C500531500C0F31510001306000166 +:1002D0006314D52A6392C52A930190001725000064 +:1002E000130545D907200500872045000721850013 +:1002F0008326C500531500C0F31510001306000136 +:10030000631CD526639AC5269301C00017250000FB +:10031000130545D7072005008720450007218500E4 +:100320008326C500531510C0F315100013060001F5 +:100330006314D5246392C5249301D00017250000CF +:10034000130545D5072005008720450007218500B6 +:100350008326C500531510C0F315100013060001C5 +:10036000631CD520639AC5209301E0001725000087 +:10037000130545D307200500872045000721850088 +:100380008326C500531510C0F31510001306100086 +:100390006314D51E6392C51E9301F000172500005B +:1003A000130545D10720050087204500072185005A +:1003B0008326C500531510C0F31510001306100056 +:1003C000631CD51A639AC51A930100011725000012 +:1003D000130545CF0720050087204500072185002C +:1003E0008326C500531510C0F31510001306000036 +:1003F0006314D5186392C5189301100117250000E6 +:10040000130545CD072005008720450007218500FD +:100410008326C500531510C0F315100013061000F5 +:10042000631CD514639AC51493012001172500009D +:10043000130545CB072005008720450007218500CF +:100440008326C500531510C0F315100013060001D4 +:100450006314D5126392C512930130011725000071 +:10046000130545C9072005008720450007218500A1 +:100470008326C500531510C0F315100013060000A5 +:10048000631CD50E639AC50E97200000938080C729 +:1004900087A00000D3F000C0B70300809383F3FF70 +:1004A0009301A002639A700C97200000938080C58E +:1004B00087A08000D3F000C0B70300809301C00282 +:1004C000639C700A972000009380C0C387A04000FF +:1004D000D3F000C0B70300809383F3FF9301400380 +:1004E000639C7008972000009380C0C187A0C00063 +:1004F000D3F000C0B70300809383F3FF9301600340 +:10050000639C7006972000009380C0BF87A0000006 +:10051000D3F010C09303F0FF9301E003639E7004D7 +:1005200097200000938000BE87A04000D3F010C049 +:100530009303F0FF9301F003639070049720000091 +:10054000938040BC87A08000D3F010C093030000CC +:10055000930100046392700297200000938080BA98 +:1005600087A0C000D3F010C09303F0FF93011004E4 +:1005700063947000631030020F00F00F638001007D +:100580009391110093E111009308D00513850100A8 +:10059000730000000F00F00F930110009308D005C6 +:1005A0001305000073000000731000C0000000007D +:1005B000000000000000000000000000000000003B +:0405C0000000000037 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000CDCC8CBF0000000000000000FFFFFFFFF0 +:10201000000080BF0000000000000000FFFFFFFF85 +:10202000666666BF000000000000000000000000BF +:102030006666663F0000000000000000000000002F +:102040000000803F000000000000000001000000D0 +:10205000CDCC8C3F0000000000000000010000001B +:102060005ED032CF000000000000000000000080C1 +:102070005ED0324F0000000000000000FFFFFF7F35 +:10208000000040C000000000000000000000000050 +:10209000000080BF00000000000000000000000001 +:1020A000666666BF0000000000000000000000003F +:1020B0006666663F000000000000000000000000AF +:1020C0000000803F00000000000000000100000050 +:1020D000CDCC8C3F0000000000000000010000009B +:1020E0005ED032CF000000000000000000000000C1 +:1020F0005ED0324F0000000000000000005ED0B251 +:10210000FFFFFFFFFFFFFF7F000080FF0000807FD9 +:10211000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F4F +:10212000000000000000F0FF000000000000F07F51 +:040000058000000077 +:00000001FF diff --git a/src/test/resources/hex/rv32uf-p-fdiv.hex b/src/test/resources/hex/rv32uf-p-fdiv.hex new file mode 100755 index 0000000..2d48fa4 --- /dev/null +++ b/src/test/resources/hex/rv32uf-p-fdiv.hex @@ -0,0 +1,69 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0080130F0FFE63040F0067000F000F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF930000006C +:10005000130100009301000013020000930200004E +:100060001303000093030000130400009304000036 +:10007000130500009305000013060000930600001E +:100080001307000093070000130800009308000006 +:100090001309000093090000130A0000930A0000EE +:1000A000130B0000930B0000130C0000930C0000D6 +:1000B000130D0000930D0000130E0000930E0000BE +:1000C000130F0000930F0000732540F1631005002B +:1000D000970200009382020173905230735000180F +:1000E000970200009382020273905230B7020080A0 +:1000F0009382F2FF7390023B9302F0017390023AF5 +:100100007350403097020000938242017390523046 +:10011000735020307350303093010000970200007C +:10012000938282EE73905230130510001315F5017F +:10013000634C05000F00F00F930110009308D005E9 +:10014000130500007300000097020080938282EB89 +:10015000638A020073905210B7B20000938292102B +:100160007390223073500030372500007320053023 +:100170007350300097020000938242017390123452 +:10018000732540F1730020309301200017250000F3 +:10019000130545E707200500872045000721850056 +:1001A0008326C500D3711018538501E0F3151000A4 +:1001B000130610006312D5146390C5149301300028 +:1001C00017250000130505E50720050087204500D9 +:1001D000072185008326C500D3711018538501E0DF +:1001E000F3151000130610006318D5106396C510A0 +:1001F00093014000172500001305C5E20720050004 +:1002000087204500072185008326C500D37110187B +:10021000538501E0F315100013060000631ED50C92 +:10022000639CC50C9301500017250000130585E061 +:100230000720050087204500072185008326C5008B +:10024000D3710058538501E0F31510001306100018 +:100250006314D50A6392C50A930160001725000054 +:10026000130545DE0720050087204500072185008E +:100270008326C500D3710058538501E0F3151000A3 +:1002800013060000631AD5066398C5069301700033 +:1002900017250000130505DC072005008720450011 +:1002A000072185008326C500D3710058538501E0DE +:1002B000F3151000130600016310D504639EC502F8 +:1002C0009301800017250000130505DA07200500BB +:1002D00087204500072185008326C500D37100587B +:1002E000538501E0F3151000130610006316D500C6 +:1002F0006394C500631030020F00F00F63800100AB +:100300009391110093E111009308D005138501002A +:10031000730000000F00F00F930110009308D00548 +:100320001305000073000000731000C000000000FF +:1003300000000000000000000000000000000000BD +:0403400000000000B9 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000DB0F494054F82D4000000000E0EE933F04 +:1020100000409AC433639A4400000000A2C57FBF09 +:10202000DB0F49400000803F00000000DB0F49400B +:10203000DB0F49400000000000000000C5DFE23F68 +:1020400000401C4600000000000000000000C842E4 +:10205000000080BF00000000000000000000C07F02 +:102060000000000000002B43000000000000000002 +:10207000263A51410000000000000000000000006E +:040000058000000077 +:00000001FF diff --git a/src/test/resources/hex/rv32uf-p-fmadd.hex b/src/test/resources/hex/rv32uf-p-fmadd.hex new file mode 100755 index 0000000..b8ead87 --- /dev/null +++ b/src/test/resources/hex/rv32uf-p-fmadd.hex @@ -0,0 +1,89 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0080130F0FFE63040F0067000F000F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF930000006C +:10005000130100009301000013020000930200004E +:100060001303000093030000130400009304000036 +:10007000130500009305000013060000930600001E +:100080001307000093070000130800009308000006 +:100090001309000093090000130A0000930A0000EE +:1000A000130B0000930B0000130C0000930C0000D6 +:1000B000130D0000930D0000130E0000930E0000BE +:1000C000130F0000930F0000732540F1631005002B +:1000D000970200009382020173905230735000180F +:1000E000970200009382020273905230B7020080A0 +:1000F0009382F2FF7390023B9302F0017390023AF5 +:100100007350403097020000938242017390523046 +:10011000735020307350303093010000970200007C +:10012000938282EE73905230130510001315F5017F +:10013000634C05000F00F00F930110009308D005E9 +:10014000130500007300000097020080938282EB89 +:10015000638A020073905210B7B20000938292102B +:100160007390223073500030372500007320053023 +:100170007350300097020000938242017390123452 +:10018000732540F1730020309301200017250000F3 +:10019000130545E707200500872045000721850056 +:1001A0008326C500C3711010538501E0F3151000BC +:1001B000130600006314D5246392C5249301300014 +:1001C00017250000130505E50720050087204500D9 +:1001D000072185008326C500C3711010538501E0F7 +:1001E000F315100013061000631AD5206398C5207C +:1001F00093014000172500001305C5E20720050004 +:1002000087204500072185008326C500C371101093 +:10021000538501E0F3151000130600006310D51E8E +:10022000639EC51C9301500017250000130585E04F +:100230000720050087204500072185008326C5008B +:10024000CF711010538501E0F31510001306000064 +:100250006316D51A6394C51A930160001725000030 +:10026000130545DE0720050087204500072185008E +:100270008326C500CF711010538501E0F3151000DF +:1002800013061000631CD516639AC51693017000FF +:1002900017250000130505DC072005008720450011 +:1002A000072185008326C500CF711010538501E01A +:1002B000F3151000130600006312D5146390C514E3 +:1002C00093018000172500001305C5D907200500FC +:1002D00087204500072185008326C500C7711010BF +:1002E000538501E0F3151000130600006318D510C4 +:1002F0006396C5109301900017250000130585D75C +:100300000720050087204500072185008326C500BA +:10031000C7711010538501E0F3151000130610008B +:10032000631ED50C639CC50C9301A000172500002B +:10033000130545D5072005008720450007218500C6 +:100340008326C500C7711010538501E0F315100016 +:10035000130600006314D50A6392C50A9301B00026 +:1003600017250000130505D3072005008720450049 +:10037000072185008326C500CB711010538501E04D +:10038000F315100013060000631AD5066398C5061E +:100390009301C000172500001305C5D007200500F4 +:1003A00087204500072185008326C500CB711010EA +:1003B000538501E0F3151000130610006310D504F7 +:1003C000639EC5029301D00017250000130585CE5A +:1003D0000720050087204500072185008326C500EA +:1003E000CB711010538501E0F315100013060000C7 +:1003F0006316D5006394C500631030020F00F00F40 +:10040000638001009391110093E111009308D005DE +:1004100013850100730000000F00F00F930110001E +:100420009308D0051305000073000000731000C08E +:1004300000000000000000000000000000000000BC +:0404400000000000B8 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:102000000000803F000020400000803F0000604052 +:10201000000080BF33639AC4CDCC8C3F66869A445F +:10202000000000400000A0C0000000C0000040C14F +:102030000000803F000020400000803F000060C0A2 +:10204000000080BF33639AC4CDCC8C3F66869AC4AF +:10205000000000400000A0C0000000C0000040419F +:102060000000803F000020400000803F0000C03F93 +:10207000000080BF33639AC4CDCC8C3F00409A44AB +:10208000000000400000A0C0000000C0000000C12F +:102090000000803F000020400000803F0000C0BFE3 +:1020A000000080BF33639AC4CDCC8C3F00409AC4FB +:1020B000000000400000A0C0000000C0000000417F +:040000058000000077 +:00000001FF diff --git a/src/test/resources/hex/rv32uf-p-fmin.hex b/src/test/resources/hex/rv32uf-p-fmin.hex new file mode 100755 index 0000000..b1126d3 --- /dev/null +++ b/src/test/resources/hex/rv32uf-p-fmin.hex @@ -0,0 +1,115 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0080130F0FFE63040F0067000F000F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF930000006C +:10005000130100009301000013020000930200004E +:100060001303000093030000130400009304000036 +:10007000130500009305000013060000930600001E +:100080001307000093070000130800009308000006 +:100090001309000093090000130A0000930A0000EE +:1000A000130B0000930B0000130C0000930C0000D6 +:1000B000130D0000930D0000130E0000930E0000BE +:1000C000130F0000930F0000732540F1631005002B +:1000D000970200009382020173905230735000180F +:1000E000970200009382020273905230B7020080A0 +:1000F0009382F2FF7390023B9302F0017390023AF5 +:100100007350403097020000938242017390523046 +:10011000735020307350303093010000970200007C +:10012000938282EE73905230130510001315F5017F +:10013000634C05000F00F00F930110009308D005E9 +:10014000130500007300000097020080938282EB89 +:10015000638A020073905210B7B20000938292102B +:100160007390223073500030372500007320053023 +:100170007350300097020000938242017390123452 +:10018000732540F1730020309301200017250000F3 +:10019000130545E707200500872045000721850056 +:1001A0008326C500D3011028538501E0F315100004 +:1001B000130600006310D538639EC53693013000E6 +:1001C00017250000130505E50720050087204500D9 +:1001D000072185008326C500D3011028538501E03F +:1001E000F3151000130600006316D5346394C5346C +:1001F00093014000172500001305C5E20720050004 +:1002000087204500072185008326C500D3011028DB +:10021000538501E0F315100013060000631CD53070 +:10022000639AC5309301500017250000130585E03F +:100230000720050087204500072185008326C5008B +:10024000D3011028538501E0F315100013060000B8 +:100250006312D52E6390C52E930160001725000010 +:10026000130545DE0720050087204500072185008E +:100270008326C500D3011028538501E0F315100033 +:10028000130600006318D52A6396C52A93017000EF +:1002900017250000130505DC072005008720450011 +:1002A000072185008326C500D3011028538501E06E +:1002B000F315100013060000631ED526639CC526A7 +:1002C0009301C000172500001305C5D907200500BC +:1002D00087204500072185008326C500D3111028FB +:1002E000538501E0F3151000130600006314D524B4 +:1002F0006392C5249301D00017250000130585D70C +:100300000720050087204500072185008326C500BA +:10031000D3111028538501E0F315100013060000D7 +:10032000631AD5206398C5209301E00017250000CB +:10033000130545D5072005008720450007218500C6 +:100340008326C500D3111028538501E0F315100052 +:10035000130600006310D51E639EC51C9301F000B8 +:1003600017250000130505D3072005008720450049 +:10037000072185008326C500D3111028538501E08D +:10038000F3151000130600006316D51A6394C51AFE +:1003900093010001172500001305C5D007200500B3 +:1003A00087204500072185008326C500D31110282A +:1003B000538501E0F315100013060000631CD516E9 +:1003C000639AC5169301100117250000130585CE09 +:1003D0000720050087204500072185008326C500EA +:1003E000D3111028538501E0F31510001306000007 +:1003F0006312D5146390C5149301400117250000C2 +:10040000130545CC072005008720450007218500FE +:100410008326C500D3111028538501E0F315100081 +:10042000130600016318D5106396C510930150019F +:1004300017250000130505CA072005008720450081 +:10044000072185008326C500D3111028538501E0BC +:10045000F315100013060000631ED50C639CC50C39 +:100460009301E001172500001305C5C7072005000B +:1004700087204500072185008326C500D301102869 +:10048000538501E0F3151000130600006314D50A2C +:100490006392C50A9301F00117250000130585C575 +:1004A0000720050087204500072185008326C50019 +:1004B000D3011028538501E0F31510001306000046 +:1004C000631AD5066398C50693010002172500003C +:1004D000130545C307200500872045000721850037 +:1004E0008326C500D3111028538501E0F3151000B1 +:1004F000130600006310D504639EC5029301100229 +:1005000017250000130505C10720050087204500B9 +:10051000072185008326C500D3111028538501E0EB +:10052000F3151000130600006316D5006394C50090 +:10053000631030020F00F00F6380010093911100EF +:1005400093E111009308D0051385010073000000AA +:100550000F00F00F930110009308D0051305000061 +:1005600073000000731000C00000000000000000D5 +:10057000000000000000000000000000000000007B +:040580000000000077 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000020400000803F000000000000803FF2 +:1020100033639AC4CDCC8C3F0000000033639AC474 +:10202000CDCC8C3F33639AC40000000033639AC464 +:10203000FFFFFF7F33639AC40000000033639AC43C +:10204000DB0F494077CC2B320000000077CC2B32DD +:10205000000080BF000000C000000000000000C0C1 +:10206000000020400000803F0000000000002040F1 +:1020700033639AC4CDCC8C3F00000000CDCC8C3FA4 +:10208000CDCC8C3F33639AC400000000CDCC8C3F94 +:10209000FFFFFF7F33639AC40000000033639AC4DC +:1020A000DB0F494077CC2B3200000000DB0F4940AA +:1020B000000080BF000000C000000000000080BFE2 +:1020C0000100807F0000803F000000000000803F92 +:1020D000FFFFFF7FFFFFFF7F000000000000C07FC9 +:1020E00000000080000000000000000000000080F0 +:1020F00000000000000000800000000000000080E0 +:10210000000000800000000000000000000000004F +:10211000000000000000008000000000000000003F +:040000058000000077 +:00000001FF diff --git a/src/test/resources/hex/rv32uf-p-ldst.hex b/src/test/resources/hex/rv32uf-p-ldst.hex new file mode 100755 index 0000000..3626fdb --- /dev/null +++ b/src/test/resources/hex/rv32uf-p-ldst.hex @@ -0,0 +1,43 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0080130F0FFE63040F0067000F000F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF930000006C +:10005000130100009301000013020000930200004E +:100060001303000093030000130400009304000036 +:10007000130500009305000013060000930600001E +:100080001307000093070000130800009308000006 +:100090001309000093090000130A0000930A0000EE +:1000A000130B0000930B0000130C0000930C0000D6 +:1000B000130D0000930D0000130E0000930E0000BE +:1000C000130F0000930F0000732540F1631005002B +:1000D000970200009382020173905230735000180F +:1000E000970200009382020273905230B7020080A0 +:1000F0009382F2FF7390023B9302F0017390023AF5 +:100100007350403097020000938242017390523046 +:10011000735020307350303093010000970200007C +:10012000938282EE73905230130510001315F5017F +:10013000634C05000F00F00F930110009308D005E9 +:10014000130500007300000097020080938282EB89 +:10015000638A020073905210B7B20000938292102B +:100160007390223073500030372500007320053023 +:100170007350300097020000938242017390123452 +:10018000732540F17300203097250000938585E7A3 +:1001900087A0450027AA150003A54501B703004025 +:1001A000930120006314750297250000938585E56F +:1001B00087A0050027AC150003A58501B70380BF04 +:1001C0009301300063147500631030020F00F00FCC +:1001D000638001009391110093E111009308D00511 +:1001E00013850100730000000F00F00F9301100051 +:1001F0009308D0051305000073000000731000C0C1 +:0402000000000000FA +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000080BF0000004000004040000080C091 +:10201000EFBEADDEBEBAFECAEA1DADAB0DD03713C2 +:040000058000000077 +:00000001FF diff --git a/src/test/resources/hex/rv32uf-p-move.hex b/src/test/resources/hex/rv32uf-p-move.hex new file mode 100755 index 0000000..7b8c19a --- /dev/null +++ b/src/test/resources/hex/rv32uf-p-move.hex @@ -0,0 +1,81 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0080130F0FFE63040F0067000F000F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF930000006C +:10005000130100009301000013020000930200004E +:100060001303000093030000130400009304000036 +:10007000130500009305000013060000930600001E +:100080001307000093070000130800009308000006 +:100090001309000093090000130A0000930A0000EE +:1000A000130B0000930B0000130C0000930C0000D6 +:1000B000130D0000930D0000130E0000930E0000BE +:1000C000130F0000930F0000732540F1631005002B +:1000D000970200009382020173905230735000180F +:1000E000970200009382020273905230B7020080A0 +:1000F0009382F2FF7390023B9302F0017390023AF5 +:100100007350403097020000938242017390523046 +:10011000735020307350303093010000970200007C +:10012000938282EE73905230130510001315F5017F +:10013000634C05000F00F00F930110009308D005E9 +:10014000130500007300000097020080938282EB89 +:10015000638A020073905210B7B20000938292102B +:100160007390223073500030372500007320053023 +:100170007350300097020000938242017390123452 +:10018000732540F17300203073D030003715000024 +:1001900013054523F3153500930310009301200048 +:1001A000639C752673253000930340039301300050 +:1001B00063147526732510009303400193014000DA +:1001C000631C7524735521009303100093015000A4 +:1001D0006314752473253000930340059301600078 +:1001E000631C752273751200930340019301700024 +:1001F000631475227325300093030005930180007A +:10020000631C7520B755341293858567130600006B +:10021000D38005F0530106F053802020530500E001 +:10022000B7533412938383679301A0006316751E3E +:10023000B7553412938585671306F0FFD38005F018 +:10024000530106F053802020530500E0B753349249 +:10025000938383679301B0006310751CB755349284 +:100260009385856713060000D38005F0530106F0DF +:1002700053802020530500E0B753341293838367E3 +:100280009301C000631A7518B7553492938585673A +:100290001306F0FFD38005F0530106F053802020B1 +:1002A000530500E0B7533492938383679301D000E2 +:1002B00063147516B75534129385856713060000CD +:1002C000D38005F0530106F053902020530500E041 +:1002D000B75334929383836793014001631E751271 +:1002E000B7553412938585671306F0FFD38005F068 +:1002F000530106F053902020530500E0B753341209 +:10030000938383679301500163187510B755349236 +:100310009385856713060000D38005F0530106F02E +:1003200053902020530500E0B753349293838367A2 +:10033000930160016312750EB755349293858567FA +:100340001306F0FFD38005F0530106F053902020F0 +:10035000530500E0B7533412938383679301700110 +:10036000631C750AB7553412938585671306000020 +:10037000D38005F0530106F053A02020530500E080 +:10038000B7533412938383679301E00163167508B2 +:10039000B7553412938585671306F0FFD38005F0B7 +:1003A000530106F053A02020530500E0B7533492C8 +:1003B000938383679301F00163107506B7553492F8 +:1003C0009385856713060000D38005F0530106F07E +:1003D00053A02020530500E0B753349293838367E2 +:1003E00093010002631A7502B755349293858567AD +:1003F0001306F0FFD38005F0530106F053A0202030 +:10040000530500E0B75334129383836793011002BE +:1004100063147500631030020F00F00F6380010059 +:100420009391110093E111009308D0051385010009 +:10043000730000000F00F00F930110009308D00527 +:100440001305000073000000731000C000000000DE +:10045000000000000000000000000000000000009C +:10046000000000000000000000000000000000008C +:10047000000000000000000000000000000000007C +:040480000000000078 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:040000058000000077 +:00000001FF diff --git a/src/test/resources/hex/rv32uf-p-recoding.hex b/src/test/resources/hex/rv32uf-p-recoding.hex new file mode 100755 index 0000000..bd12e2a --- /dev/null +++ b/src/test/resources/hex/rv32uf-p-recoding.hex @@ -0,0 +1,46 @@ +:0200000480007A +:100000006F00C004732F2034930F8000630AFF0336 +:10001000930F90006306FF03930FB0006302FF038A +:10002000170F0080130F0FFE63040F0067000F000F +:10003000732F203463540F006F00400093E19153FD +:10004000171F000023203FFC6FF09FFF930000006C +:10005000130100009301000013020000930200004E +:100060001303000093030000130400009304000036 +:10007000130500009305000013060000930600001E +:100080001307000093070000130800009308000006 +:100090001309000093090000130A0000930A0000EE +:1000A000130B0000930B0000130C0000930C0000D6 +:1000B000130D0000930D0000130E0000930E0000BE +:1000C000130F0000930F0000732540F1631005002B +:1000D000970200009382020173905230735000180F +:1000E000970200009382020273905230B7020080A0 +:1000F0009382F2FF7390023B9302F0017390023AF5 +:100100007350403097020000938242017390523046 +:10011000735020307350303093010000970200007C +:10012000938282EE73905230130510001315F5017F +:10013000634C05000F00F00F930110009308D005E9 +:10014000130500007300000097020080938282EB89 +:10015000638A020073905210B7B20000938292102B +:100160007390223073500030372500007320053023 +:100170007350300097020000938242017390123452 +:10018000732540F17300203017250000072085E714 +:1001900017250000872045E7D3F00010532510A055 +:1001A000930310009301200063147506530510A0FB +:1001B0009303100093013000631C7504531510A0C5 +:1001C000930300009301400063147504537000D042 +:1001D00013051000D37005D0D3F00010532510A0E4 +:1001E000930310009301500063147502530510A08F +:1001F0009303100093016000631C7500531510A059 +:1002000093030000930170006314750063103002C3 +:100210000F00F00F638001009391110093E1110032 +:100220009308D00513850100730000000F00F00F44 +:10023000930110009308D00513050000730000001F +:04024000731000C077 +:1010000000000000000000000000000000000000E0 +:1010100000000000000000000000000000000000D0 +:1010200000000000000000000000000000000000C0 +:1010300000000000000000000000000000000000B0 +:081040000000000000000000A8 +:10200000000080FF000040400000000000000000D1 +:040000058000000077 +:00000001FF diff --git a/src/test/scala/vexriscv/ip/fpu/FpuTest.scala b/src/test/scala/vexriscv/ip/fpu/FpuTest.scala index d066eb1..8465fa4 100644 --- a/src/test/scala/vexriscv/ip/fpu/FpuTest.scala +++ b/src/test/scala/vexriscv/ip/fpu/FpuTest.scala @@ -90,8 +90,14 @@ class FpuTest extends FunSuite{ val a,b,c = (s.nextLong(16).toInt) (b2f(a), b2f(b), c, s.nextInt(16)) } + + def f32_f32 = { + val s = new Scanner(next) + val a,b = (s.nextLong(16).toInt) + (b2f(a), b2f(b), s.nextInt(16)) } + } lazy val RAW = build("") lazy val RNE = build("-rnear_even") lazy val RTZ = build("-rminMag") @@ -115,8 +121,8 @@ class FpuTest extends FunSuite{ val mul = new TestCase("f32_mul") val ui2f = new TestCase("ui32_to_f32") val i2f = new TestCase("i32_to_f32") - val f2ui = new TestCase("f32_to_ui32") - val f2i = new TestCase("f32_to_i32") + val f2ui = new TestCase("f32_to_ui32 -exact") + val f2i = new TestCase("f32_to_i32 -exact") val eq = new TestCase("f32_eq") val lt = new TestCase("f32_lt") val le = new TestCase("f32_le") @@ -127,6 +133,8 @@ class FpuTest extends FunSuite{ val sgnj = new TestCase("f32_eq") val sgnjn = new TestCase("f32_eq") val sgnjx = new TestCase("f32_eq") + val sqrt = new TestCase("f32_sqrt") + val div = new TestCase("f32_div") } val cpus = for(id <- 0 until portCount) yield new { @@ -152,12 +160,17 @@ class FpuTest extends FunSuite{ assert(flagAccumulator == ref, s"Flag missmatch dut=$flagAccumulator ref=$ref $report") flagAccumulator = 0 } + def flagClear(): Unit ={ + waitUntil(pendingMiaou == 0) + flagAccumulator = 0 + } val flagAggregated = dut.reflectBaseType(s"flagAcc$id").asInstanceOf[Bits] dut.clockDomain.onSamplings{ val c = dut.io.port(id).completion pendingMiaou -= c.count.toInt flagAccumulator |= flagAggregated.toInt + dut.writeback.randomSim.randomize() } StreamDriver(dut.io.port(id).cmd ,dut.clockDomain){payload => @@ -228,7 +241,7 @@ class FpuTest extends FunSuite{ cmd.opcode #= opcode cmd.rs1 #= rs1 cmd.rs2 #= rs2 - cmd.rs3.randomize() + cmd.rs3 #= rs3 cmd.rd #= rd cmd.arg #= arg cmd.roundMode #= rounding @@ -447,7 +460,6 @@ class FpuTest extends FunSuite{ assert(f2b(v) == f2b(ref), f"## ${a} ${opName} $b = $v, $ref $rounding") } - flagMatch(flag, ref, f"## ${opName} ${a} $b $ref $rounding") } @@ -585,6 +597,37 @@ class FpuTest extends FunSuite{ } } + + + def testSqrtExact(a : Float, ref : Float, flag : Int, rounding : FpuRoundMode.E): Unit ={ + val rs = new RegAllocator() + val rs1, rs2, rs3 = rs.allocate() + val rd = Random.nextInt(32) + load(rs1, a) + + sqrt(rd,rs1) + storeFloat(rd){v => + val error = Math.abs(ref-v)/ref + println(f"sqrt($a) = $v, $ref $error $rounding") + assert(checkFloat(ref, v)) + } + } + + def testDivExact(a : Float, b : Float, ref : Float, flag : Int, rounding : FpuRoundMode.E): Unit ={ + val rs = new RegAllocator() + val rs1, rs2, rs3 = rs.allocate() + val rd = Random.nextInt(32) + load(rs1, a) + load(rs2, b) + + div(rd,rs1, rs2) + storeFloat(rd){v => + val error = Math.abs(ref-v)/ref + println(f"div($a, $b) = $v, $ref $error $rounding") + assert(checkFloat(ref, v)) + } + } + def testF2i(a : Float, signed : Boolean): Unit ={ val rs = new RegAllocator() val rs1, rs2, rs3 = rs.allocate() @@ -803,8 +846,70 @@ class FpuTest extends FunSuite{ val binaryOps = List[(Int,Int,Int,FpuRoundMode.E) => Unit](add, sub, mul) +// testSqrt(0.0f) + // testSqrt(1.2f) + // for(a <- fAll) testSqrt(a) +// for(_ <- 0 until 1000) testSqrt(randomFloat()) + + for(i <- 0 until 1000){ + testFma(randomFloat(), randomFloat(), randomFloat()) + } + flagClear() + println("fma done") //TODO + + + testF2iExact(-2.14748365E9f, -2147483648, 0, true, FpuRoundMode.RDN) + + testEq(Float.PositiveInfinity,Float.PositiveInfinity,1, 0) + testEq(0f, 0f,1, 0) + + for(_ <- 0 until 10000){ + val (a,b,i,f) = f32.le.RAW.f32_f32_i32 + testLe(a,b,i, f) + } + for(_ <- 0 until 10000){ + val (a,b,i,f) = f32.lt.RAW.f32_f32_i32 + testLt(a,b,i, f) + } + + for(r <- 0 until 10000){ + val (a,b,i,f) = f32.eq.RAW.f32_f32_i32 + testEq(a,b,i, f) + if(r % 100000 == 0) println(r) + } + println("Cmp done") + + for(_ <- 0 until 1000000){ + val rounding = FpuRoundMode.elements.randomPick() + val (a,b,f) = f32.f2ui(rounding).f32_i32 + testF2iExact(a,b, f, false, rounding) + } + + for(_ <- 0 until 1000000){ + val rounding = FpuRoundMode.elements.randomPick() + val (a,b,f) = f32.f2i(rounding).f32_i32 + testF2iExact(a,b, f, true, rounding) + } + + println("f2i done") + + for(_ <- 0 until 10000){ + val rounding = FpuRoundMode.elements.randomPick() + val (a,b,r,f) = f32.div(rounding).f32_f32_f32 + testDivExact(a, b, r, f, rounding) + } + println("f32 div done") + + for(_ <- 0 until 10000){ + val rounding = FpuRoundMode.elements.randomPick() + val (a,r,f) = f32.sqrt(rounding).f32_f32 + testSqrtExact(a, r, f, rounding) + } + println("f32 sqrt done") + flagClear() + for(_ <- 0 until 10000){ testSgnj(b2f(Random.nextInt()), b2f(Random.nextInt())) testSgnjn(b2f(Random.nextInt()), b2f(Random.nextInt())) @@ -848,37 +953,10 @@ class FpuTest extends FunSuite{ } println("minMax done") - for(_ <- 0 until 100000){ - val (a,b,i,f) = f32.le.RAW.f32_f32_i32 - testLe(a,b,i, f) - } - for(_ <- 0 until 100000){ - val (a,b,i,f) = f32.lt.RAW.f32_f32_i32 - testLt(a,b,i, f) - } - - for(_ <- 0 until 100000){ - val (a,b,i,f) = f32.eq.RAW.f32_f32_i32 - testEq(a,b,i, f) - } - println("Cmp done") - testF2iExact(-2.14748365E9f, -2147483648, 0, true, FpuRoundMode.RDN) - for(_ <- 0 until 10000){ - val rounding = FpuRoundMode.elements.randomPick() - val (a,b,f) = f32.f2ui(rounding).f32_i32 - testF2iExact(a,b, f, false, rounding) - } - for(_ <- 0 until 10000){ - val rounding = FpuRoundMode.elements.randomPick() - val (a,b,f) = f32.f2i(rounding).f32_i32 - testF2iExact(a,b, f, true, rounding) - } - - println("f2i done") for(_ <- 0 until 10000){ val rounding = FpuRoundMode.elements.randomPick()